我正在尝试通过我的 Ansible Playbook 重新启动 Supervisor,但是我似乎遇到了 Ansible 的主管模块的问题。
在我的 Supervisor 配置中我定义了一个程序:
[program:process]
process_name=%(program_name)s_%(process_num)02d
command=/home/box1/workers/bin/process
numprocs=64
directory=/home/box1/workers/bin
autostart=true
autorestart=true
startretries=5
stderr_logfile=/tmp/%(program_name)s-err.log
stdout_logfile=/tmp/%(program_name)s-out.log
user=root
一切正常。但是,当我尝试通过 Ansible 重新启动 Supervisor 时,出现以下错误:
failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)
我的 Ansible 任务配置如下:
- name: Restart Supervisor
sudo: yes
supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
对于name
参数,我尝试了program:process
、和program
,但似乎都不起作用。我目前使用的是 Ansible 1.5.4。program:
process
答案1
Ansible模块supervisorctl
不支持该reload
命令(看这里),以便主管获取新的配置条目。
你可以自己做这样的事情:
- command: supervisorctl reread
sudo: yes
- supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
sudo: yes
关于重新加载/重新读取/更新/重启的文档似乎缺失了,并且这篇博文已经过时了;您可以进行实验以确保reload
其能够达到您的预期。
最后,不要将程序定义放在supervisord.conf中。相反,将它们作为单独的文件放在 /etc/supervisor/conf.d/*.conf 中。这使得安装和维护变得更加容易。