管理状态漂移与协调
检测、诊断并协调状态漂移,即 Terraform 状态与真实基础设施之间的差异,避免其导致中断或意外更改。
管理状态漂移与协调 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
什么是漂移
当真实基础设施在 Terraform 之外发生更改时,就会出现漂移:例如工程师在控制台中调整设置,或其他工具修改资源。此时状态与现实不一致,下一次 apply 可能会意外恢复或覆盖这些更改。
使用 plan 检测漂移
普通的 terraform plan 会刷新状态并显示差异。如果资源发生了漂移,计划会报告您未在代码中进行的更改。
terraform plan仅刷新计划
如果要查看漂移而不提出配置更改,请使用仅刷新计划。它会更新状态,使其匹配现实,并显示两者之间的差异。
terraform plan -refresh-only阅读漂移报告
Terraform 会用检测到的更改标记发生漂移的属性。波浪号表示原地更改;减号/加号组合表示某个值在 Terraform 之外被添加或删除。
# aws_instance.web has changed
~ instance_type = "t3.micro" -> "t3.small"协调差异的两种方式
发现漂移后,您需要选择一个方向:
- 接受现实——更新代码,使其匹配新状态。
- 恢复代码——执行 apply,将基础设施恢复为配置所声明的状态。
将漂移接受到状态中
如果手动更改是有意进行的,请运行 apply -refresh-only,将现实记录到状态中,然后更新代码使其匹配,以便后续计划保持干净。
terraform apply -refresh-only恢复漂移
如果更改未经授权,普通的 terraform apply 会将基础设施恢复为声明的配置,从而撤销手动编辑。
terraform apply定位单个资源
如果要进行针对性修复,-target 会将操作限制为一个资源。请谨慎使用,因为它可能掩盖更广泛的漂移。
terraform apply -target=aws_instance.web防止虚假漂移
某些属性由 AWS 或其他工具管理。请使用 ignore_changes,让 Terraform 停止与它们反复争夺控制权。
resource "aws_instance" "web" {
lifecycle {
ignore_changes = [tags["LastScanned"]]
}
}持续检测漂移
在 CI 中按计划运行仅刷新计划,以便尽早发现漂移。Terraform Cloud 提供内置的漂移检测功能,会在状态与现实不一致时发出提醒。
on:
schedule:
- cron: "0 6 * * *"文化胜过工具
防止漂移的最佳方式是流程:限制控制台写入权限,通过 Terraform 处理所有更改,并将手动编辑视为事件。工具可以检测漂移,纪律才能避免漂移。
快速检查
测试您对漂移管理的掌握情况。
回顾:保持状态准确
现在您已经能够处理漂移:
- 使用
plan或plan -refresh-only检测漂移。 - 通过
apply -refresh-only加上代码更新来接受漂移。 - 使用普通的
apply恢复漂移。 - 使用
ignore_changes和按计划执行的检查,提前发现问题。
常见问题解答
「管理状态漂移与协调」课时是免费的吗?
是的 — 「管理状态漂移与协调」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「管理状态漂移与协调」这节课中我会学到什么?
检测、诊断并协调状态漂移,即 Terraform 状态与真实基础设施之间的差异,避免其导致中断或意外更改。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「管理状态漂移与协调」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。