【问题标题】:Does Ansible manages all hosts in parallel or just five? (-f and :serial)Ansible 是并行管理所有主机还是仅管理五个主机? (-f 和 :serial)
【发布时间】:2019-01-08 18:59:57
【问题描述】:

我阅读了这两个 ansible 文档:

ansible-playbook -f --> Statement 1

ansible-playbook :serial --> Statement 2

我发现了这两条语句:

声明 1

-f <FORKS>, --forks <FORKS>

指定要使用的并行进程数(默认=5)

声明 2

滚动更新批量大小。默认情况下,Ansible 将尝试并行管理戏剧中引用的所有机器。对于滚动更新用例,您可以使用 serial 关键字定义 Ansible 一次应管理的主机数量:

问题

什么是正确的? ansible 是一次使用所有主机还是只使用 5 个? 或者可能 5 只是 -f 参数的默认值?

感谢您澄清这一点!

干杯

【问题讨论】:

    标签: parallel-processing ansible fork


    【解决方案1】:

    --forks 设置同时执行当前任务主机数量(参见Ansible Configuration Settings

    serial 设置 playbook 首先运行的主机的数量(或百分比/分数),成功完成后,将其应用于另一个 主机数量(见Delegation, Rolling Updates, and Local Actions

    示例:

    有设置:

    • 库存与host[1-7]
    • 带有 task1 和 task2 的剧本
    • --fork 2
    • serial: 3

    程序是:

    1. host1host2 上运行task1
    2. host3 上运行task1
    3. host1host2 上运行task2
    4. host3 上运行task2
    5. host[1-3] 上完成剧本运行
    6. host4host5 上运行task1
    7. host6 上运行task1
    8. host4host5 上运行task2
    9. host6 上运行task2
    10. host[4-6] 上完成剧本运行
    11. host7 上运行task1
    12. host7 上运行task2
    13. host7 上完成剧本运行

    因为:

    • 您一次最多在 2 台主机上执行一项任务 (--fork)
    • 您一次最多在 3 台主机上执行整个剧本 (serial)

    【讨论】:

    • 这是一个很好的描述,我不得不到处寻找。但问题是,如果添加“策略:免费”,流程会如何变化?
    【解决方案2】:

    阅读this doc (Ansible Performance Tuning) 应该提供您需要的所有详细信息。但是总而言之,--forks 广泛配置了 Ansible 可以生成的并行进程的数量,因此可以并行配置的最大主机数量。 --fork 的值默认为 5。

    但是,如果 serial 设置为低于通过 --forks 参数有效的数字,那么这就是将并行定位的主机数量 serial 参数已设置

    这种组合很有用,因为它允许您调整 playbook 以针对最佳数量的主机运行以获得性能,但随后将某些任务限制为该值的一小部分(例如,以确保服务重新启动是交错的,而不是同时应用于所有主机,从而确保最终用户的 POV 不会导致该服务停机)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2017-08-15
      相关资源
      最近更新 更多