当串行参数大于一个时,Ansible如何处理任务?

时间:2018-07-17 09:52:38

标签: ansible

serial参数为1时,Ansible会托管一个主机,然后执行剧本中给出的任务,然后再移至下一个主机。

但是如果serial参数不止一个会发生什么?

例如,如果我有10台主机,并且我的串行参数为3,这3个任务将如何执行任务? 将这些任务一次又一次地主机执行?还是将其像默认执行策略一样执行,每个主机将在执行下一个任务之前执行第一个任务。

我没有找到任何与此相关的文档。

1 个答案:

答案 0 :(得分:1)

在假设您保留标准strategy的情况下,该剧本的每次播放将在与您在关键字serial上指定的节点数相同的位置执行,但要逐个任务执行,即使您拥有一个节点的运行速度比其他节点快,除非其他节点完成相同的任务,否则它将不会运行下一个任务。然后将从清单中提取另外3个节点。如果您还有其他剧本,则将执行相同的场景。

基本上,您可以使用10个节点进行库存

  • 获得3个节点
  • 执行任务
  • 获得3个节点
  • 执行任务
  • 获得3个节点
  • 执行任务
  • 获取剩余节点
  • 执行任务

该行为在https://docs.ansible.com/ansible/2.5/user_guide/playbooks_strategies.html

中进行了说明
  

serial指令可以将此行为“批量”分配给   主机,然后运行到下一个播放完成之前   “批”开始。

我建议您携带这样的测试手册,以了解playbookplaysserial

- 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来运行剧本