我正试图通过我的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参数,我尝试过程序:进程,程序,程序:和进程但似乎没有工作.我目前正在使用Ansible 1.5.4.
解决方法
supervisorctl Ansible模块不支持reload命令(
see here),管理员需要该命令来获取新的配置条目.
你可以这样做:
- command: supervisorctl reread sudo: yes - supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf sudo: yes
关于重载/重读/更新/重启的文档似乎缺失了,this blog post is out of date;你可以尝试确保重新加载符合你的期望.
最后,不要将程序定义放在supervisord.conf中.而是将它们作为单独的文件放在/etc/supervisor/conf.d/*.conf中.这使安装和维护变得更加容易.