Terraform State 管理
Terraform State 是 Terraform 最重要的组成部分之一,也是最容易出问题的地方。
你可能会遇到这些问题:terraform apply 报资源已经存在但代码里没有?两个人同时 apply 导致状态不一致?State 文件损坏导致整个基础设施无法管理?
这些问题的根源在于:对 State 的理解不够深入。
State 是什么
Terraform State 是 Terraform 用于记录实际基础设施状态的文件。它是 Terraform 与真实世界之间的桥梁。
State 的作用
默认 State 文件
查看
State 存储后端
本地 State(默认)
本地
Warning
本地 State 的问题:不适合团队协作,无法锁定状态,无法在 CI/CD 中使用。
S3 后端(推荐生产环境)
S3
创建
Terraform Cloud 后端
Terraform
GCS 后端(Google Cloud)
GCS
State 锁定
State 锁定防止多人同时修改状态:
State
DynamoDB 锁定表结构
DynamoDB
强制解锁(谨慎使用)
Danger
强制解锁可能造成状态损坏:只有确认持有锁的人已经放弃操作时才能使用。
强制解锁
State 隔离
工作空间隔离
工作空间操作
使用工作空间的配置
目录隔离
文件隔离 vs 工作空间
State 操作
查看 State
查看
移动资源
移动资源到新模块
引入已有资源
引入已有资源
删除和重新创建
删除和重新创建
State 备份
自动备份
备份
版本控制集成
Git
Warning
不要把 State 提交到 Git:State 可能包含敏感信息(如密码),即使加密存储也不安全。
State 恢复
从备份恢复
State 问题排查
常见问题 1:State 落后于实际资源
同步
常见问题 2:State 锁定无法释放
检查锁定状态
常见问题 3:State 文件损坏
State
State 安全
敏感值处理
敏感变量
State 中的敏感数据
标记敏感资源
State 管理检查清单
State 管理是 Terraform 运维的核心。好的 State 管理策略,可以让团队协作更顺畅,基础设施更安全,故障恢复更容易。