标准流程 · 自动化与交付

待环境验证

Ansible 分批变更与回退流程

通过目标清单核对、检查模式、单机试运行和 serial 分批执行组织 Ansible 变更,定义批次验收与停止条件。

AnsibleLinux安全加固自动化
阅读导引 · 理解后再操作

这篇知识解决什么问题

分批变更的核心是限制每一次失败的影响,并能够回答哪些主机未执行、部分执行或已经通过业务验收。把目标快照、产物版本、故障域与恢复对象对应起来,理解语法检查、检查模式、试点执行和批次验收各自能证明什么。

批次是业务边界,不只是执行速度

同一批中不可同时失去哪些角色、故障域和最小服务容量,应由业务约束决定。并发连接数主要控制任务吞吐,不能替代一批完成并验收后的推进门槛。目标和变量在开始前应留下可复核快照,防止动态清单改变导致实际执行范围超出批准对象。

任务结果与最终状态分别保存

任务返回成功或 changed,只能说明对应模块报告了某种结果;服务配置、管理访问和业务响应仍需要各自证据。失败后先建立主机状态清单,区分不可达、部分完成与未执行,再确定恢复对象。不能把一次全量重跑当作自动收敛和安全恢复的证明。

进入文章正文
关联架构图解7 个组件 · 点击展开

借用安全加固图中的资产清单、风险评审、Ansible、目标主机和备用入口,解释批次推进前的依赖。本篇的分批方法可用于其他主机配置,但本图不表示通用编排引擎,也未展开数据库迁移或集群成员变更。

查看场景架构与实施步骤
参考架构 · 非实时拓扑

资产、受控变更与备用访问架构

将资产确认、人工风险判断、Ansible 变更和认证日志防护分开,保留独立恢复通道,使每项加固都有明确对象、证据和单项回退入口。

  • 数据 / 请求
  • 控制 / 管理
  • 观测 / 查询

点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。

资产、受控变更与备用访问架构:组件关系图将资产确认、人工风险判断、Ansible 变更和认证日志防护分开,保留独立恢复通道,使每项加固都有明确对象、证据和单项回退入口。 资产清单 → 基线与风险评审:明确检查对象;基线与风险评审 → Ansible 控制端:批准单项任务;Ansible 控制端 → Linux 目标主机:受控 SSH 变更;备用管理通道 → Linux 目标主机:验证恢复入口;Linux 目标主机 → 认证与审计日志:记录认证事件;Fail2ban → 认证与审计日志:读取失败证据;Fail2ban → Linux 目标主机:封禁与解除。箭头说明见下方流向解读。
逻辑参考图,节点代表建议职责而非已经部署的服务;加固策略需按发行版、业务依赖和安全准入逐项确认。

资产清单

数据 / 制品

使用批准的主机与分组清单;已部署且通过安全准入时,可选复用 InfraGuard 台账。InfraGuard 不承担本方案的内置基线扫描或自动整改。

查看关联工具
全部组件职责 7 个组件
资产清单
使用批准的主机与分组清单;已部署且通过安全准入时,可选复用 InfraGuard 台账。InfraGuard 不承担本方案的内置基线扫描或自动整改。工具介绍 资产清单
基线与风险评审
根据经审阅的检查项、实际系统证据及业务依赖形成整改清单,明确责任人、例外期限和恢复文件。
备用管理通道
在收紧 SSH、sudo 或网络前验证带外或第二管理路径,并保留当前会话直到新登录和业务回归通过。
Ansible 控制端
执行批准的独立配置任务,限定 inventory、批次和提权范围;检查模式结果仍需真实单机试点确认。工具介绍 Ansible 控制端
Linux 目标主机
承载已核对的业务服务和管理策略。变更按单项生效与回归,不把补丁、认证和防火墙一次性全量扩散。
Fail2ban
使用经测试的过滤器读取认证失败证据,通过所配动作限制来源;不是身份认证、边界防火墙或补丁治理的替代。工具介绍 Fail2ban
认证与审计日志
按实际发行版确认 journal 或文件后端,限制读取权限并监控留存空间,输出脱敏后用于风险复检。
流向解读 7 条连接
  1. 1

    资产清单 基线与风险评审

    控制 / 管理 · 明确检查对象

    资产范围用于限定检查对象,资产存在或 SSH 可执行并不自动代表安全检查通过。

  2. 2

    基线与风险评审 Ansible 控制端

    控制 / 管理 · 批准单项任务

    仅将已评审差异、恢复点和停止条件转为执行任务。

  3. 3

    Ansible 控制端 Linux 目标主机

    控制 / 管理 · 受控 SSH 变更

    通过授权管理身份应用配置,先试点再依批次验收结果推进。

  4. 4

    备用管理通道 Linux 目标主机

    控制 / 管理 · 验证恢复入口

    管理入口用于发生误锁定时恢复具体配置,不意味着可绕过组织访问控制。

  5. 5

    Linux 目标主机 认证与审计日志

    观测 / 查询 · 记录认证事件

    保存成功、拒绝与提权等事件,结合配置生效证据完成复检。

  6. 6

    Fail2ban 认证与审计日志

    观测 / 查询 · 读取失败证据

    Fail2ban 按实际日志后端匹配规则,应单独验证误命中和合法管理来源例外。

  7. 7

    Fail2ban Linux 目标主机

    控制 / 管理 · 封禁与解除

    调用配置的本机防护动作,观察封禁解除;错误规则只停用对应 jail,不批量清空防护。

故障域与操作边界

管理链路与业务链路不能一起失守

SSH 或防火墙错误可能阻断所有远程回退,备用路径必须提前实测;新会话验证前不关闭原会话。

防护命中不是完整安全证明

Fail2ban 只补充限制重复失败来源;漏洞判断还需发行版安全公告、包信息和业务风险,不能只比较版本字符串或基线分数。

批次失败只回退受影响项

不同发行版、账号依赖和业务角色是独立变更边界。停止后续批次,按主机与配置恢复,不用全量覆盖掩盖单点失败。

架构依据与版本核对 3 篇官方资料

图解是本站基于官方资料整理的逻辑参考;实施前仍需核对实际部署版本、组件支持范围与变更审批。

适用范围与前提

用于通过 Ansible 对 Linux 主机执行可分批实施的配置变更,例如安全配置、代理配置或受控软件更新。执行前应有经过评审的 playbook、明确的目标清单、可恢复的配置版本和业务健康检查。数据库结构迁移、集群成员调整等存在额外一致性约束的操作,需要专门流程。本文中的步骤仍需在目标环境演练。

冻结目标与变更产物

为本次执行记录 inventory 来源、代码版本、变量版本和操作者,避免执行过程中动态清单扩大范围。选取与生产角色一致的试点主机,确认剩余实例能够承担业务负载。涉及 SSH、防火墙或提权配置时,应先验证带外入口与备用管理会话。确认备份实际可读取,并将回退输入与本次改动一一对应,而不是只记录一个“有备份”的勾选项。

分层预检与检查模式

下列文件名与主机名均为占位符,需替换后使用。前两条核对语法和目标范围,最后一条用于已审查 playbook 的检查模式。

ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILE --syntax-check
ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILE --list-hosts
ansible-playbook -i INVENTORY_FILE PLAYBOOK_FILE --check --limit CANARY_HOST

检查模式是模拟,不是完整执行证明:部分模块不支持,依赖前序注册结果的任务也可能无法完整评估。执行前还要检查 check_mode: false 等显式覆盖,避免把整个 playbook 当成必然只读。需要查看差异时仅对不含凭据的任务启用 diff,并限制输出访问范围。

以业务容量确定批次

通过 serial 控制每批完成整个 play 的主机数,可从单台试点逐步扩大。批次必须满足服务最小可用副本和故障域约束;按百分比分批不能自动保证跨可用区安全。把摘流、配置校验、必要重载、健康检查与重新接流纳入同一流程,并在每批结束后观察业务。并发数控制执行速度,不能替代批次边界。还应检查 run_once 的使用,它与 serial 结合时可能每批执行一次。

把回退做成明确动作

变更前保存原配置、软件版本和服务状态,回退时只恢复本次涉及的对象。文件恢复后先执行服务配置检查,再按服务支持方式重载或重启,最后验证业务。可以用 block 与 rescue 组织失败后的处理,但必须覆盖不可达主机和执行中断等路径;不能假设所有失败都会自动进入恢复。软件降级还需确认配置、数据格式和依赖兼容。

验收与执行记录

每批验收同时检查任务失败数、不可达主机、实际配置、管理通道与业务指标。关键检查必须形成可判断的通过条件,不能只依赖 play recap 的 changed 数量。全部批次完成后,再检查未覆盖主机及例外。保存目标清单、任务结果、健康检查证据和回退状态;在合适环境复跑可评估幂等性,但预期发生变化的任务应单独解释。

停止条件与恢复秩序

当试点出现业务退化、登录通道丢失、配置差异超出预期或健康检查无法取得结果时,停止后续批次。先定位已成功、部分完成和未执行的主机,再按角色恢复,避免对全量清单盲目重跑。失败比例阈值应结合批次大小核算,并预先验证触发边界。恢复完成后重新确认业务与管理能力,保留未恢复项并由明确负责人接手。

参考资料

从现象到判断

先收集证据,再缩小范围。以下是判读路径,不代表已经确认根因或获准变更。

  1. 批准清单与实际执行对象不一致,或相同 playbook 在不同时间解析出不同主机,批次范围难以追溯。

    只读核对
    读取已保存的 inventory、代码和变量版本、主机展开结果与执行记录,比较批准对象、角色及故障域,不运行 playbook。
    如何判读
    应先定位目标来源和版本差异;在范围不能解释前暂停推进,不能通过减少并发来弥补错误目标本身的风险。
  2. 检查模式显示可执行,但试点记录出现跳过、意外改动或依赖前序输出失败,预检与执行结果差距较大。

    只读核对
    阅读相关任务的模块支持说明、条件分支、注册变量和 check_mode 覆盖,并核对已存在的试点日志及脱敏差异。
    如何判读
    检查模式覆盖有限且可被任务显式改变;先解释差异来源,不能将预检成功当成所有任务无副作用或可回退的保证。
  3. 某一批中既有成功又有不可达主机,汇总任务失败数不高,但部分业务或管理入口已出现退化。

    只读核对
    把该批每台主机的最后完成任务、不可达时间、当前获准读取的配置状态与既有业务健康证据对应起来。
    如何判读
    批次可能处于混合状态,应据主机和配置对象交接恢复;不能仅按失败比例继续,也不能假设所有失败进入了 rescue。
常见误区与判断边界 2 项

误把检查模式作为纯只读扫描器

任务可以显式覆盖检查模式,模块支持和变量依赖也影响模拟结果。若没有先审阅 playbook,直接运行检查模式仍可能超出诊断权限。本学习补充只要求阅读已有任务与执行材料;是否执行任何模式,都需按实际任务副作用核定授权。

配置备份不自动覆盖全部恢复路径

备份文件无法单独解决软件降级兼容、失去管理连接或服务数据已变化的问题。恢复方案应绑定本次修改的对象,并解释如何验证生效与业务能力。批次失败时对所有主机覆盖旧配置,可能破坏已经正确完成或根本未受影响的实例。

交接时应留下的证据

作为记录提纲使用,不是自动检查结果;未取得的证据应标记缺口,并注明负责人。

  • 保存批准主机、inventory 来源快照、代码及变量版本与实际展开目标,标注角色、故障域和动态来源可能变化的范围。
  • 记录每批的容量依据、试点代表性和业务验收门槛,附备用管理入口的已有验证材料,而非仅写已准备回退。
  • 为每台主机保留最后完成任务、模块结果、不可达或失败时间,区分未执行、部分完成和已完成且验收通过的状态。
  • 将原配置或版本、恢复对象和配置生效检查一一对应,交接尚未恢复主机、可能的数据兼容限制及继续推进的决策人。

记录需包含环境、版本、时间与时区;分享前脱敏,不附访问令牌、密码或完整业务敏感数据。

继续阅读与资料核对

补充相关主题,再结合当前环境的实施记录形成结论。

返回原理导读

DOUYA OPS ECOSYSTEM

贡献你的经验,帮助更多运维人

把故障复盘、标准流程和最佳实践沉淀为可检索、可复用的知识内容。