You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于标签控制Ansible playbook的serial分批执行行为

Ansible 按标签动态切换serial分批规则实现方案

Ansible的serial是play层级的全局配置,同一个play内无法根据传入的运行标签动态切换分批策略,直接拆分两个独立play分别匹配对应执行场景即可,不需要修改原有角色的内部配置。

修改后的Playbook配置

# 无标签/指定task1时触发:全量主机一次性执行
- hosts: all
  serial: "100%"
  tags:
    - always
    - task1
  roles:
    - role: playbook2
      tags: task1

# 指定task2时触发:按配置规则分批执行
- hosts: all
  serial:
    - 1
    - "25%"
    - "100%"
  tags:
    - never
    - task2
  roles:
    - role: playbook2
      tags: task2

配置逻辑说明

  • 第一个play绑定内置标签always,不传入任何运行标签时默认触发,serial设置为100%即一次性在所有目标主机执行,仅运行角色内标记task1的任务
  • 显式传入task1标签运行时,仅会触发第一个全量执行的play,不会启动分批逻辑
  • 第二个play绑定内置标签never,无标签、仅传task1标签时完全不会执行;只有显式传入task2标签运行时才会触发,严格按照预设的「1台→25%主机→剩余所有主机」的串行批次规则执行task2任务
  • 原有playbook2角色内的任务标签配置不需要做任何修改

执行效果验证

  • 全量无分批执行task1:执行ansible-playbook 你的playbook文件名.yml 或 ansible-playbook 你的playbook文件名.yml -t task1,所有目标主机同步执行task1
  • 分批执行task2:执行ansible-playbook 你的playbook文件名.yml -t task2,按预设串行规则分批跑task2

内容的提问来源于stack exchange,提问作者TheChickenMan14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 13:27:22