Terraform 状态文件管理

1. 为什么要把 State 搬到「云上」 State 文件是 Terraform 的「账本」:它记录云上到底有哪些资源、各自的属性。本地存放 State 有三个硬伤: 绑定机器:State 在 A 电脑上,B 电脑 apply 就会"失忆",容易把资源重建一遍。 无法协作:两个人同时改同一个环境,互相覆盖,状态文件乱套。 安全隐患:本地文件易丢,而且里面可能含有明文密码等敏感信息,因此也不建议上传到 gitlab 等代码托管平台。 解决办法就是 Terraform 的 Backend 机制:用阿里云 OSS 存 State(集中、加密、可回滚),用 Tablestore 提供加锁(防止多人并发操作冲突)。 2. 工作原理 每次执行 Terraform 命令,OSS Backend 都会走「加锁 → 干活 → 放锁」三步: flowchart LR A[terraform apply] --> B{从 Tablestore 拿 LockID} B -- 已存在 --> C[报错:有人在操作] B -- 不存在 --> D[生成并存入 LockID] D --> E[读写 OSS 里的 State 文件] E --> F[释放 LockID] 有锁 → 说明有人正在操作,或上次操作异常退出,直接报错 无锁 → 自动生成 LockID 存入 Tablestore,操作完成后更新 OSS 中的 State,再释放锁 3. 第一步:创建「存储 + 锁」资源 在正式使用前,要先准备一个 OSS Bucket 和一个 Tablestore 实例/表。它们本身也是云资源,所以也可以用 Terraform 自己建。 ...