Ansible:使用项目等待输入

Ansible:使用项目等待输入,ansible,Ansible,我有一组web服务器进程,希望一次重新启动一个。我想等待进程N准备好为HTTP请求提供服务,然后再重新启动进程N+1 以下工作: - 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=res

我有一组web服务器进程,希望一次重新启动一个。我想等待进程N准备好为HTTP请求提供服务,然后再重新启动进程N+1

以下工作:

- 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


我是否缺少这样做的方法,或者为服务器的每个实例复制这些任务真的是一种方法?

我认为使用Ansible默认功能是不可能的。我认为你最好的选择是创造。我已经看到模块可以调用其他模块,因此您可能可以有一个slim模块,它只调用supervisortl模块,然后等待端口准备就绪。然后可以使用_项调用此模块


另一个想法是首先不要使用supervisorctl。您可以运行shell或脚本任务,然后手动调用supervisorctl并等待端口打开。

您是否以剧本和角色的形式运行此任务?如果是这样,剧本应该通过主机运行,角色只知道其各自的上下文。因此,没有主机,它们是单个主机中的进程。