2014-12-18 3 views
0

Ok, я использую magic_shell_environment (от magic_shell), чтобы установить экологическийповар экологические переменные в убунту

Мое приложение зависит от этих переменных должны присутствовать, чтобы представить во время запуска, так что знает, что на коробке развертывания (а не локально).

В первый раз, когда это выполняется, эти среды не существуют, поэтому приложение запускается в режиме разработки, я должен вручную перезапустить приложение, чтобы заставить его работать.

Как это сделать, чтобы переменная окружения была там, чтобы приложение могло ее видеть?

Мое приложение начинается с app install

+1

Вы можете установить переменную env в ресурсе выполнения, который вы используете, или просто ENV ['env_var'] = 'значение' перед ресурсом выполнения. Без кода рецепта сложно сказать наилучшим образом ... – Tensibai

+0

Это не сработает, так как приложение, которое он запускает, не будет воспринимать его как отдельное рубиновое время выполнения, делая 'ENV ['env_var'] = ' значение '' только установило бы его для рецепта, а ничего больше – Thermatix

+0

Выполнить ресурс передать фактический Env для подпроцесса. Но, как я уже сказал, не зная ваш сценарий запуска или какой-то код вокруг вашего запуска, вам почти невозможно помочь – Tensibai

ответ

1

Хорошо, пишу это в качестве ответа (никогда не бывает слишком поздно :))

У вас есть два решения:

  1. Установите окр вар с рубином ENV['variable'] = "whatever" в рецепте перед ресурсом execute. Запущенный процесс наследует среду родительского процесса, здесь среда запуска chef-client.

  2. Используйте атрибут execute ресурса (doc)

атрибут среды работает также и для других script ресурсов, поскольку они наследуют от executeenvironment.

Смежные вопросы