Назад | Перейти на главную страницу

Как заставить Supervisord читать переменные среды bash

Я использую Supervisord для запуска своего Java-приложения, которое требует некоторых переменных среды для настройки. Я устанавливаю переменные среды в / etc / окружающая среда

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

Мой supervisor / 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-приложение] раздел как:

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

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

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

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

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

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

Дополнительная информация:
Я использую это грубый
Supervisord запускается при запуске системой systemd с использованием сценария в /etc/init.d/
Агент Puppet также запускается Supervisor, поэтому он не может перезапустить службу Supervisor.