事故经过
把状态从本地迁移到 S3 后端时,为了“清理”一个报错条目,手工编辑了 state JSON,删掉了一个 VPC 资源条目。下一次 apply,Terraform 认为 VPC 不存在,新建了一套——连带路由表、对等连接全部漂移。
正确流程
1 2 3 |
|
需要调整条目时只用 terraform state mv / terraform import,永远不要手写 state JSON。
制度层面的改进
- state 写权限收敛到 CI,个人只有 plan 权限。
- 后端开启版本控制与锁(S3 + DynamoDB)。
- 任何 apply 前的 plan 结果必须有人复核。