所以我注意到在我的ansible playbooks中,如果我使用相同的playbook定位多个主机,那么在进入下一个任务之前,所有主机必须完成每个任务。
是否可以定义playbook,以便任务在完成后立即运行以下任务而无需等待任务在所有其他主机上完成?
答案 0 :(得分:5)
Ansible的这种行为可以由playbook strategies控制。
默认策略为linear
策略:
所有主机将在任何主机启动下一个任务之前运行每个任务,使用分叉数(默认值为5)进行并行化。
另一种策略是free
:
第二种策略附带ansible free,允许每个主机尽可能快地运行直到游戏结束。:
设置如下策略:
- hosts: all
strategy: free
tasks:
如果无法使用free
策略,您可以使用serial
指令设置批次。