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

当串行参数不止一个时,Ansible如何处理任务?,ansible,Ansible,当serial参数为1时,Ansible接受一台主机,然后在移动到下一台主机之前执行剧本中给出的任务 但是当serial参数不止一个时会发生什么 例如,如果我有10台主机,并且我的串行参数是3,这3个任务将如何执行这些任务?这些任务是一次一台主机一个接一个地执行吗?还是像默认执行策略一样执行,每台主机将先执行第一个任务,然后再执行下一个任务。 我还没有找到任何与此相关的文档。假设您保持标准,playbook的每个游戏将在您在关键字serial上指定的节点上执行,但会逐个任务执行,因此即使您有一个

serial
参数为1时,Ansible接受一台主机,然后在移动到下一台主机之前执行剧本中给出的任务

但是当
serial
参数不止一个时会发生什么

例如,如果我有10台主机,并且我的串行参数是3,这3个任务将如何执行这些任务?这些任务是一次一台主机一个接一个地执行吗?还是像默认执行策略一样执行,每台主机将先执行第一个任务,然后再执行下一个任务。


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

假设您保持标准,playbook的每个游戏将在您在关键字
serial
上指定的节点上执行,但会逐个任务执行,因此即使您有一个节点运行任务的速度比其他节点快,它也不会运行下一个任务,直到其他人完成同样的任务。然后,将从资源清册中获取另外3个节点。如果你有另一个剧本,同样的场景也会上演

所以基本上你的10个节点清单就可以了

  • 取3个节点
  • 执行任务
  • 取3个节点
  • 执行任务
  • 取3个节点
  • 执行任务
  • 取剩余节点
  • 执行任务
这一行为在本文中得到了解释

串行指令可以将此行为“批处理”到 主机,然后运行到下一个 “批处理”开始

我建议您使用这样的测试剧本来理解
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