你需要了解的 Terraform 状态锁定迁移:超越 DynamoDB

主要观点:Terraform 后端配置中基于 DynamoDB 的状态锁定即将被弃用,HashiCorp 主推原生 S3 状态锁定,这带来诸多好处如降低基础设施复杂度、简化入职流程、优化成本、更好地与 AWS 最佳实践对齐等,同时介绍了迁移现有基础设施到原生 S3 锁定的步骤,包括更新后端配置、重新初始化后端、测试锁定机制、更新 CI/CD 管道,还强调了启用 S3 桶版本控制及 IAM 权限设置等重要事项。

关键信息:

  • 原配置:terraform { backend "s3" { bucket = "my-terraform-state-prod" key = "network/terraform.tfstate" region = "us-east-1" dynamodb_table = "terraform-lock-table" } },需改为terraform { backend "s3" { bucket = "my-terraform-state-prod" key = "network/terraform.tfstate" region = "us-east-1" use_lockfile = true } }
  • 迁移步骤:先更新非生产环境后端配置,再重新初始化后端,测试锁定机制,更新 CI/CD 管道,同时启用 S3 桶版本控制,迁移完成后计划清理 DynamoDB 表。
  • IAM 权限:需为 Terraform 执行角色设置特定 S3 权限,如s3:GetObjects3:PutObjects3:DeleteObject等,无需 DynamoDB 权限。
  • 注意事项:迁移前要审计 Terraform 仓库,更新文档,提前规划清理 DynamoDB 表,迁移过程要尽早开始、沟通清晰、充分测试。

重要细节:

  • 多年来在 AWS 中 Terraform 状态管理的标准实践是创建专门的 DynamoDB 表用于状态锁定,现在可直接在 S3 后端实现原生锁定。
  • 测试锁定机制时,在两个终端窗口同时运行terraform plan,第二个命令会因状态被锁定而等待。
  • 启用 S3 桶版本控制可保存状态文件的每一次更改,方便回溯和恢复。
  • 弃用 DynamoDB 表后可保留两周左右以防需要回滚配置更改,确认新机制正常后再删除。
  • 这是 Terraform 生态系统简化和整合的一部分,如向原生 Terraform Cloud 状态管理迁移。
阅读 48
0 条评论