Ansible难以重新启动Supervisor


8

我试图通过我的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

这很好。但是,当我尝试通过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:processprogramprogram:process,但似乎没有工作。我目前正在使用Ansible 1.5.4。


1
首先要做的是更新Ansible。几乎没有理由为什么要使用这样的旧版本。
迈克尔·汉普顿

这是Ubuntu 14.04 LTS随附的即用型版本。我了解它有些过时,但是在Ansible手册中有关Supervisor模块的内容都没有表明我应该进行更新(除了我不感兴趣的组名之外)。当然,较新的版本可能已修复了一些错误,但是,我尝试的工作似乎很初级,因为没有最新版本应该能够处理它。
路加福音

相当确定您为此需要Ansible 1.6或更高版本,因为那是在添加组支持时开始的。甚至Red Hat都在跟踪最新的稳定版本(它们目前在1.9.4上),所以我不知道在这里与Ubuntu有什么关系。当然,在Red Hat上,您可以只使用systemd而忽略所有这些主管内容。
迈克尔·汉普顿

别担心。这是我要使用的文档:docs.ansible.com/ansible/supervisorctl_module.html
路加福音

是的,这就是您需要1.6的页面!
Michael Hampton

Answers:


9

supervisorctlAnsible模块不支持的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中。这使安装和维护更加容易。


2
感谢那。非常感谢,但是,这没有什么不同。该supervisorctl任务仍然失败,因为它无法引用/查找program:process。这在Ansible模块中似乎是一个问题(是的,我没有将程序定义放在内supervisord.conf,而是从外部conf文件加载它们)。最后,我使用了一个简单的Ansible命令,完全绕开了Supervisor模块:command: supervisorctl -c /etc/supervisor/supervisord.conf restart这很完美。
路加福音

没有-c@luke可以使用吗?
tedder42 '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.