当serial
参数为1时,Ansible会托管一个主机,然后执行剧本中给出的任务,然后再移至下一个主机。
但是如果serial
参数不止一个会发生什么?
例如,如果我有10台主机,并且我的串行参数为3,这3个任务将如何执行任务? 将这些任务一次又一次地主机执行?还是将其像默认执行策略一样执行,每个主机将在执行下一个任务之前执行第一个任务。
我没有找到任何与此相关的文档。
答案 0 :(得分:1)
在假设您保留标准strategy的情况下,该剧本的每次播放将在与您在关键字serial
上指定的节点数相同的位置执行,但要逐个任务执行,即使您拥有一个节点的运行速度比其他节点快,除非其他节点完成相同的任务,否则它将不会运行下一个任务。然后将从清单中提取另外3个节点。如果您还有其他剧本,则将执行相同的场景。
基本上,您可以使用10个节点进行库存
该行为在https://docs.ansible.com/ansible/2.5/user_guide/playbooks_strategies.html
中进行了说明serial指令可以将此行为“批量”分配给 主机,然后运行到下一个播放完成之前 “批”开始。
我建议您携带这样的测试手册,以了解playbook
,plays
和serial
。
- hosts: all
gather_facts: false
serial: 3
tasks:
- ping:
- ping:
- hosts: all
gather_facts: false
serial: 5 # test with 5 nodes now
tasks:
- ping:
- ping:
如果要模拟行为差异,则可以使用选项-C
来运行剧本