首页/系统与基础设施/自动化运维速查/批量执行的目标分组策略
批量执行与作业50 条

批量执行的目标分组策略

目标分组是把批量作业的作用对象按角色、环境、机房、批次等维度切开,让影响面可控、失败可隔离、并发可分级。分组要服务具体目的——按批次分组是为了灰度与回滚,按机房是为了窗口安排;随意分组只会带来重叠与遗漏,同台主机被两个批次同时操作最容易引发并发冲突。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​​​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

分组解决什么问题

分组把「一堆主机」变成有语义的集合:同一组内应当同质(同一角色、同一版本、同一规格),组与组之间可隔离(一批失败不影响另一批),规模适中(大到有代表性,小到可快速回滚)。分组维度常见四类:角色或用途(Web、数据库、缓存)、环境(生产、预发、测试)、位置(机房、可用区)、批次(灰度首批、次批、全量)。分组既用于选择目标,也用于决定并发与串行节拍,例如按机房分批、每批限制台数。

基本信息

常见维度角色用途、环境、机房或可用区、版本批次、硬件规格
分组原则组内同质、组间可隔离、规模适中、可由标签动态派生
落地载体主机清单分组与嵌套、标签、动态清单、平台侧资源分组
关键约束组间重叠会让同一主机被不同批次同时操作

典型使用场景

  • 灰度发布:首批一到两台,观察后再扩到全量
  • 故障隔离:把异常批次单独隔离,避免重试波及健康节点
  • 并发分级:数据库所在组限制并发,Web 组可放宽
  • 窗口安排:按机房分组,分别在各机房的低谷窗口执行
  • 依赖顺序:控制面先于数据面、主节点先于备节点
  • 容量与规格差异:按规格分组,避免大内存节点与小规格节点同参数下发

分组与分批执行

分组与分批执行
# 主机清单分组(INI 风格示意):角色、环境、批次各司其职
[web]
web-01 ansible_host=10.0.1.11
web-02 ansible_host=10.0.1.12

[db]
db-01 ansible_host=10.0.2.11

[prod:children]          # 组可以嵌套:生产包含 Web 与数据库组
web
db

[canary]                 # 灰度首批单独成组,先只对这批执行
web-01

# 按组控制节拍:每批两台,失败立即停,避免带着故障扩面
# - hosts: web
#   serial: 2
#   max_fail_percentage: 0
#
# 按组控制并发:小批并发数,避免下游被瞬间打满
# ansible web -m ping -f 5

分组维度与取舍

维度主要好处风险配合手段
角色用途同质主机同参数,误配少跨角色依赖被忽略定义组间执行顺序
环境生产与测试隔离环境间配置漂移变量按环境分层
机房或可用区窗口可分别安排跨机房同步被忽略按地区分别排窗
版本批次灰度可控,回滚快批次成员长期不收敛批次到期后合并回主组
硬件规格参数按规格推导规格变更后分组过期定期复核规格标签
分组为选择目标与决定节拍服务,因此每建一个组都应能回答「它让哪一步更安全」。若一个组既不影响目标选择、也不影响并发或顺序,它多半只是文档里的分类。
分组允许嵌套与重叠时,要先确认目标集合是否互斥。同一台主机同时出现在两个批次里,被并发执行两次相同操作,可能造成重复变更或配置互相覆盖。

易错点

  • 主机同时属于多个批次且被并发操作:重复执行或互相覆盖,问题难以复现
  • 分组与清单不同步:新上线主机没进任何组,批量作业长期漏掉它
  • 按组并发开得过大:Web 组放宽后把数据库组整体压垮,故障从边缘蔓延到核心
  • 分组过粗:一个组包含数百台与不同角色,失败时无法定位是哪个子集的问题
  • 忽略组间隐式依赖:先改数据面后改控制面,顺序颠倒导致中间态不可用

数据来源与参考

  • Ansible 官方文档:清单分组与 serial、forks 参数
  • Kubernetes 官方文档:标签与选择器(Labels and Selectors)
  • NIST SP 800-53:配置变更的分阶段实施要求

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/batch-execution-target-grouping.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌​​‌‌​​​​‌​‌‌‌​‌​​​‌‌​​​‌‌​‌‌​‌​​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌​​‌​‌​‌‌​​​‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌‌​‌​​​‌‌​​​​‌​‌‌‌​​‌​​‌‌​​‌‌‌​‌‌​​‌​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌‌‌​‌‌‌​​‌​​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​​​​​‌‌​‌​​‌​‌‌​‌‌‌​​‌‌​​‌‌‌​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​