Ansible的Serial关键字如何处理主机分批执行逻辑?
Ansible 百分比模式
serial参数执行规则 对应测试配置如下:
- hosts: all serial: "25%"
针对10台主机的清单场景,规则和实际执行逻辑如下:
- 百分比值换算单批主机数时,统一按总目标主机数 × 占比,结果向上取整计算,无向下取整逻辑。
- 单批额定大小在play启动时基于总主机数一次性算出,不会在每批执行前基于剩余主机数重新计算,因此前序批次的主机数量固定。
- 执行时按额定数量逐批取主机运行,直到剩余未执行主机数小于额定值,最后一批直接跑完所有剩余主机,不会遗漏任何目标。
10台主机场景的实际分批结果
10台主机对应25%占比的计算值为2.5,向上取整得到额定单批大小为3台,全流程分4批执行:
- 第一批:3台
- 第二批:3台
- 第三批:3台
- 第四批:剩余1台
常见疑问明确答复
- 不会出现第一批2台、后续批次3台的拆分方式,前3批数量固定为3台,仅最后一批因剩余主机不足会出现数量小于额定值的情况。
- 无论总主机数是否能被批次大小整除,Ansible都会持续分批直到所有主机执行完成,不存在主机遗漏问题。
- 预期分4轮执行的判断是准确的,仅每批主机数的拆分规则和按整除估算的结果有差异。
如果要验证规则,可以执行playbook时增加-v verbose参数,输出中会明确打印每一批的目标主机列表,和上述规则完全匹配。
内容的提问来源于stack exchange,提问作者TheChickenMan14
相关产品推荐
相关产品推荐

