【发布时间】:2015-02-03 14:21:40
【问题描述】:
我正在使用 ansible 编写 API 部署脚本。我希望这可以通过我的清单文件中的每个主机按顺序工作,以便我可以一次完全部署到一台机器上。
使用 out box 行为,我的剧本中的每个任务都会针对清单文件中的每个主机执行,然后再继续执行下一个任务。
如何更改此行为以在下一个主机上开始之前执行主机的所有任务?理想情况下,我只想拥有一本剧本。
谢谢
【问题讨论】:
我正在使用 ansible 编写 API 部署脚本。我希望这可以通过我的清单文件中的每个主机按顺序工作,以便我可以一次完全部署到一台机器上。
使用 out box 行为,我的剧本中的每个任务都会针对清单文件中的每个主机执行,然后再继续执行下一个任务。
如何更改此行为以在下一个主机上开始之前执行主机的所有任务?理想情况下,我只想拥有一本剧本。
谢谢
【问题讨论】:
【讨论】:
策略允许在每个主机的基础上并行任务。见https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html
有 3 种策略:线性(默认)、串行和免费(最快)
- hosts: all
strategy: free
tasks:
...
【讨论】:
使用 --forks=1 指定要使用的并行进程数(默认=5)
【讨论】:
--forks=1 会导致 A1 A2 B1 B2,而 OP 要求 A1 B1 A2 B2(所有任务应用于主机 1,然后所有任务应用于主机 B)。