我想知道是否有可能在ansible 2.2.0中为两个不同的主机并行部署6个不同的任务(3|3),因为我的问题是将它们与一个攻略并行运行,它们只是顺序运行。
发布于 2017-01-05 18:41:54
您可以使用async任务来实现这一点。如下所示:
- hosts: host1,host2
tasks:
- command: /task1a.sh
async: 1000
poll: 0
register: task1a
when: inventory_hostname == 'host1'
- command: /task1b.sh
async: 1000
poll: 0
register: task1b
when: inventory_hostname == 'host2'
# ... repeat for tasks 2 and 3
- command: /check_done.sh
register: check_done
until: check_done | success
retries: 30这将分别在host1和host2上启动task1a.sh和task1b.sh作为异步作业,然后等待check_done.sh返回零。
发布于 2017-01-08 04:58:37
您可以将strategy: free与when: inventory_hostname == 'hostXX'结合使用,例如:
- hosts: all
strategy: free
tasks:
- block:
- name: task1
...
- name: task2
...
- name: task3
...
when: inventory_hostname == 'host1'
- block:
- name: task4
...
- name: task5
...
- name: task6
...
when: inventory_hostname == 'host2'strategy: free意味着所有任务将尽可能快地在所有主机上并行运行,而不是等待每个任务在每个主机上完成。哪项任务将在哪台主机上运行由when子句决定。
我在这里使用了block,因此您只需要为每个块编写一个when,但您不必使用它,您可以为每个任务编写一个when。
https://stackoverflow.com/questions/41463593
复制相似问题