Я использую 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/
Кукольный агент также управляют супервизора, так это не может перезапустить службу супервизора
Почему бы не изменить сценарий инициализации тогда? –
, потому что система находится в удаленном месте, и я не могу ее использовать, но я могу обновлять переменные среды, используя марионетку. – Panshul
Позвольте мне перефразировать это - почему бы не использовать Puppet для развертывания модифицированной версии сценария инициализации? –