我阅读了这两个有趣的文档:
ansible-playbook -f --> Statement 1
ansible-playbook :serial --> Statement 2
我发现了这两个语句:
-f <FORKS>, --forks <FORKS>
指定要使用的并行进程数(默认为5)
滚动更新批次大小 。默认情况下,Ansible将尝试并行管理播放中引用的所有计算机。对于滚动更新用例,您可以使用serial关键字定义一次Ansible应该管理多少个主机:
什么是正确的? ansible一次使用所有主机还是仅使用5个主机?
还是5只是-f
参数的默认值?
感谢您澄清这一点!
欢呼
答案 0 :(得分:2)
--forks
设置同时执行当前任务的主机数量(请参见Ansible Configuration Settings)
serial
设置首先运行剧本的主机的数量(或百分比/分数),并在成功完成后将其应用于另一个主机数量(请参见Delegation, Rolling Updates, and Local Actions)
具有设置:
host[1-7]
的库存--fork 2
serial: 3
过程是:
task1
和host1
上运行host2
task1
上运行host3
task2
和host1
上运行host2
task2
上运行host3
host[1-3]
上运行task1
和host4
上运行host5
task1
上运行host6
task2
和host4
上运行host5
task2
上运行host6
host[4-6]
上运行task1
上运行host7
task2
上运行host7
host7
上运行因为:
--fork
)serial
)答案 1 :(得分:0)
阅读this doc (Ansible Performance Tuning)应该提供您需要的所有详细信息。但是,总而言之,--forks
广泛配置了Ansible可以产生的并行进程的数量,因此,可以并行配置的主机的最大数量。 --fork
的值默认为5。
但是,如果将serial
设置为比通过--forks
参数生效的数字低的值,则这是将并行执行任务的或目标主机的数量。设置了serial
参数的播放。
这种组合很有用,因为它可以让您调整剧本以针对最佳主机数量运行,以提高性能,但随后将某些任务限制为该值的一小部分(例如,确保错开服务重启,而不是错开同时应用于所有主机,从而确保最终用户的POV不会在该服务上造成停机)。