Agent Skills
返回列表
🔒

Terraform 状态漂移检测器

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md 安装 @user_3c6cb52e/terraform-state-drift-detector。

技能介绍

状态漂移的隐性风险

在基础设施即代码(IaC)实践中,terraform plan 的通过往往被当作变更安全的充分证据。然而,当生产环境的 terraform.state 与实际云资源出现偏差时,问题并不会主动暴露。可能是某位运维人员手动调整了安全组规则,也可能是自动化脚本绕过了 Terraform 直接创建了资源。这些“隐形变更”会让后续的 terraform apply 产生不可预期的 diff,甚至在极端情况下导致资源覆盖或数据丢失。

更棘手的是,传统工作流很难系统性地捕捉这类漂移。仅依赖 terraform plan 的退出码只能判断“是否有变更”,却无法快速回答“有哪些变更”“这些变更分布在哪些资源类型上”“是否需要分批修复”。

技能的核心工作流

Terraform 状态漂移检测器 通过两个关键步骤解决上述问题:

  1. 精准捕获漂移信号:技能首先执行 terraform plan -detailed-exitcode。该参数会返回更细化的退出码,帮助区分“无变更”和“存在变更”的具体场景。
  1. 结构化解析与分类:接着使用 terraform show -json 将 plan 输出转换为 JSON 格式。技能会解析该 JSON,提取出需要变更的资源及其类型,例如 aws_instance、aws_s3_bucket 等。这种分类方式让运维团队能快速识别风险集中度——比如是集中在计算资源还是存储资源。
  1. 生成针对性修复计划:基于分类结果,技能会生成 terraform apply 的计划建议。这并非简单的“一键修复”,而是帮助团队理解修复的优先级和影响范围。例如,可以先修复状态漂移严重的模块,再逐步推进到其他区域。

适用边界与注意事项

这个技能适合需要严格管控基础设施变更的团队,尤其是多环境(开发/测试/生产)并行、依赖 Terraform 管理资源的场景。它能显著降低手动干预带来的不确定性。

但需要注意的是:

  • 技能不会自动执行 terraform apply,它只生成计划。实际修复仍需人工确认或通过自动化流程完成。
  • 状态漂移的检测频率需要与业务节奏匹配。过于频繁的检查可能产生噪声,而间隔过长又可能错过关键变更窗口。
  • 对于高度动态的环境(如自动伸缩组),状态漂移可能是预期行为。此时需要结合业务逻辑判断是否应该忽略某些类型的漂移。

通过这个技能,团队可以将状态漂移从“隐性风险”转化为“可管理的技术指标”,从而让基础设施的管理更加透明和可控。

使用场景

  • 多环境并行时,需要确认开发、测试、生产环境的 Terraform 状态是否与实际资源一致
  • 手动修改安全组或存储配置后,需要识别哪些资源的 state 已经漂移并生成修复计划
  • 计划 apply 前,需要按资源类型统计变更,判断影响集中在计算资源还是存储资源
  • IaC 流水线中,需要在合并变更前检测是否存在绕过 Terraform 的隐形修改

适合人员

  • 负责多环境 Terraform 管理的 DevOps 工程师,需要及时发现和修复状态漂移
  • 制定 IaC 变更流程的平台工程师,需要按资源类型审计 plan 与 state 的差异
  • 维护生产基础设施的 SRE,需要在 apply 前评估手动变更带来的漂移范围
  • 负责合规审计的安全工程师,需要用结构化输出追踪未审批的资源变更