2015-01-23 3 views
1

Я использую Supervisord для запуска приложения java, для которого требуются переменные среды для конфигурации. Я устанавливаю переменные среды в /и т.д./окружающая средаКак заставить Supervisord читать переменные окружения bash

export MANAGER_URL="http://192.xxx.xxx.xxx:8080/manager/" 
export MANAGER_URL2="http://192.xxx.xxx.yyy:8081/manager/" 

Мой супервизор/conf.d/myjavaapp.conf выглядит следующим образом:

[supervisord] 
nodaemon=false 
logfile_maxbytes=100MB 
logfile_backups=0 

[program:java-app] 
command=/usr/bin/java -jar /home/pi/deploy/java-app.jar 
stdout_logfile_maxbytes=200MB 
stdout_logfile_backups=2 
stderr_logfile_maxbytes=100MB 
stderr_logfile_backups=0 
autostart=true 

Я знаю, что я могу установить среду переменные для [java-app] раздел как:

environment=MANAGER_URL="url1",MANAGER_URL2="url2" 

, но это не работает для меня, поскольку мне нужно обновить значения переменных, используя манифест Puppet, который может обновлять переменные среды bash, но не переменные среды подпроцессора супервизора.

Я пытался доступ к переменным окружения оболочки с помощью:

environment=MANAGER_URL=%(MANAGER_URL)s,MANAGER_URL2=%(MANAGER_URL2)s 

, но это привело к ошибке заявив, что строки не может быть расширен.

Есть ли какой-то способ, которым я могу прочитать переменные окружения bash в моем supervisor.conf?

Extra Info:
Я бегу это на raspbian
Supervisord запускается при запуске с помощью Systemd с помощью скрипта в /etc/init.d/
Кукольный агент также управляют супервизора, так это не может перезапустить службу супервизора

+0

Почему бы не изменить сценарий инициализации тогда? –

+0

, потому что система находится в удаленном месте, и я не могу ее использовать, но я могу обновлять переменные среды, используя марионетку. – Panshul

+0

Позвольте мне перефразировать это - почему бы не использовать Puppet для развертывания модифицированной версии сценария инициализации? –

ответ