我有一组Web服务器进程,我希望一次重启一个。我想等待进程N准备好在重新启动进程N + 1之前为HTTP请求提供服务
以下作品:
- name: restart server 9990
supervisorctl: name='server_9990' state=restarted
- wait_for: port=9990 delay=1
- name: restart server 9991
supervisorctl: name='server_9991' state=restarted
- wait_for: port=9991 delay=1
等
但我真的很想在循环中这样做。似乎Ansible不允许循环内的多个任务(在这种情况下,我需要两个任务:supervisorctl和wait_for)
我是否错过了这样做的方法,或者是为服务器的每个实例复制这些任务真的要走了吗?
答案 0 :(得分:0)
我认为使用Ansible默认功能是不可能的。我认为你最好的选择是创建your own module。我已经看到模块可以调用其他模块,因此您可以使用一个简单的模块,只需调用supervisorctl
模块,然后等待端口准备就绪。然后可以使用with_items
调用此模块。
另一个想法是首先不要使用supervisorctl
。您可以运行shell
或script
任务,然后手动调用supervisorctl
并等待端口打开。