Ansible 难以重启 Supervisor

Luk*_*uke 8 supervisord ansible

我正在尝试通过我的 Ansible Playbook 重新启动 Supervisor,但我似乎遇到了 Ansible 主管模块的问题。

在我的主管配置中,我定义了一个程序:

[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
Run Code Online (Sandbox Code Playgroud)

这工作正常。但是,当我尝试通过 Ansible 重新启动 Supervisor 时,出现以下错误:

failed: [box1] => {"failed": true}
msg: program:process: ERROR (no such process)
program:process: ERROR (no such process)
Run Code Online (Sandbox Code Playgroud)

我的 Ansible 任务配置如下所示:

- name: Restart Supervisor
  sudo: yes
  supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
Run Code Online (Sandbox Code Playgroud)

对于name参数我都试过program:processprogramprogram:process,但似乎没有工作。我目前在 Ansible 1.5.4 上。

ted*_*r42 9

supervisorctlAnsible模块不支持的reload命令(见这里),这是需要主管拿起新的配置项。

你可以像这样自己做:

- command: supervisorctl reread
  sudo: yes
- supervisorctl: name=program:process state=restarted config=/etc/supervisor/supervisord.conf
  sudo: yes
Run Code Online (Sandbox Code Playgroud)

reload/reread/update/restart 的文档好像不见了,这篇博文已经过时了;您可以进行试验以确保reload符合您的预期。

最后,不要把你的程序定义放在 supervisord.conf 中。相反,将它们作为单独的文件放在 /etc/supervisor/conf.d/*.conf 中。这使得安装和维护更加容易。

  • 感谢那。非常感谢,但是,它没有任何区别。`supervisorctl` 任务仍然失败,因为它无法引用/找到 `program:process`。这似乎是这个 Ansible 模块中的一个问题(是的,我没有将我的程序定义放在 `supervisord.conf` 中,它们是从外部 `conf` 文件加载的)。最后,我使用了一个简单的 Ansible 命令,完全绕过了 Supervisor 模块:`command: supervisorctl -c /etc/supervisor/supervisord.conf restart`,这完美地工作。 (2认同)