【问题标题】:How to make Supervisord read bash environment variables如何让 Supervisord 读取 bash 环境变量
【发布时间】:2015-01-23 14:30:24
【问题描述】:

我正在使用 Supervisord 运行我的 java 应用程序,这需要一些环境变量进行配置。 我在 /etc/environment

中设置环境变量
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-app] 部分的环境变量设置为:

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

但这对我不起作用,因为我需要使用 Puppet manifest 更新变量值,它可以更新 bash 环境变量,但不能更新主管子进程环境变量。

我尝试使用以下方式访问 shell 环境变量:

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

但这导致了一个错误,提示字符串无法展开。

有没有办法可以读取我的 supervisor.conf 中的 bash 环境变量?

额外信息:
我在 raspbian
上运行它 Supervisord 在启动时由 systemd 使用 /etc/init.d/
中的脚本运行 Puppet 代理也由 Supervisor 运行,因此无法重启 Supervisor 服务

【问题讨论】:

  • 那为什么不修改init脚本呢?
  • 因为系统位于远程位置,我无法通过 ssh 进入,但我可以使用 with puppet 更新环境变量。
  • 让我重新表述一下 - 为什么不使用 Puppet 部署修改后的初始化脚本版本?

标签: linux bash puppet raspbian supervisord


【解决方案1】:

您必须在变量前加上ENV_。所以试试%(ENV_MANAGER_URL)s而不是%(MANAGER_URL)s

来源:http://supervisord.org/configuration.html#program-x-section-settings

【讨论】:

    猜你喜欢
    • 2018-07-01
    • 2017-09-04
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    相关资源
    最近更新 更多