Ansible - 如何按顺序为每个主机执行playbook

57
我正在使用ansible编写API部署脚本。我希望能按照清单文件中每个主机的顺序逐一完成部署,以便逐台机器进行完整部署。
默认情况下,我的playbook中的每个任务都会对清单文件中的每个主机执行,然后再继续下一个任务。
如何更改此行为,使其在开始下一台主机之前执行一个主机的所有任务?理想情况下,我只想有一个playbook。
谢谢
3个回答

117

仔细查看滚动更新

你在寻找的是

- hosts: webservers
  serial: 1
  tasks:
    - name: ...

ProfHase85,感谢您的回答,但是您能否举个例子,如何通过命令行参数传递“serial”值?根据这个问题https://github.com/ansible/ansible/issues/1767,应该是可能的,但很难找到一个好的示例。 - sviklim
2
这实际上与问题无关,只是变量的标准用法。这里有一个要点: https://gist.github.com/profhase/57af3e715ec7faf5bf34d84299228591最后一行是它的示例调用。 - ProfHase85

3
使用--forks=1指定要使用的并行进程数量(默认值为5)。

7
这会产生不同的效果。如果你有任务A和B,和主机1和2,--forks=1 会得到A1 A2 B1 B2,然而OP想要的是A1 B1 A2 B2(所有任务先应用于主机1,然后再应用于主机2)。 - Dolph

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接