并行运行不同的Ansible游戏

时间:2018-03-20 23:51:25

标签: ansible

我使用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主机。这可能吗?

1 个答案:

答案 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上的事实将两者结合起来存储随机主机索引/名称。