我使用Ansible进行部署。我有这样的事情:
- hosts: abc-servers
serial:
- 1
- "100%"
roles:
- deploy
- hosts: xyz-servers
serial:
- 1
- "100%"
roles:
- deploy
但是,直到abc全部完成,xyz才开始部署。
如果我可以等待第一个abc 或 xyz主机成功然后部署其他所有内容,那么这将有效:
- hosts: abc-servers:xyz-servers
serial:
- 1
- "100%"
roles:
- deploy
但是我想在部署其余的abc之前等待第一个abc主机,我想在部署其余的xyz之前等待第一个xyz主机。这可能吗?
答案 0 :(得分:1)
例如:
- hosts: abc-servers[0]
roles:
- deploy
- hosts: xyz-servers[0]
roles:
- deploy
- hosts: abc-servers[1:]:xyz-servers[1:]
roles:
- deploy
或者在上次运行中针对所有主机abc-servers:xyz-servers
运行,因为代码应该是幂等的。然后你可以在随机主机上第一次运行:
- hosts: "{{ groups['abc-servers'] | random }}"
roles:
- deploy
- hosts: "{{ groups['xyz-servers'] | random }}"
roles:
- deploy
- hosts: abc-servers:xyz-servers
roles:
- deploy
或者使用localhost上的事实将两者结合起来存储随机主机索引/名称。