从Terraform Cloud迁移到Amazon S3和DynamoDB:指南
#aws #devops #go #terraform

Terraform最近转移到管理资源下的pricing model挫败了很多用户。正如this reddit线程上的一个用户所注释:

Terraform上的价格实际上与我们为其管理的AWS资源付费几乎相同。这将为$ 20/用户/月,但是现在我们要为开发,测试和产品环境的每月250美元的账单。我们只为AWS资源支付300美元。

将您的后端从Terraform Cloud迁移到基于Amazon S3和DynamoDB的基础架构可能有助于您节省一些$$并帮助扩展跑道的末端。

它涉及配置Terraform以将这些服务用于远程状态存储。这里是有关如何执行此迁移的指南:

  • 准备基础架构:

创建一个S3存储桶:登录到AWS管理控制台,并创建一个新的S3存储器来存储您的Terraform状态文件。选择一个唯一名称。

创建一个DynamoDB表:在AWS管理控制台中,创建一个新的DynamoDB表来管理Terraform状态锁定。提供一个表名和一个主键(例如,类型字符串的锁定)。

  • 更新Terraform配置:

打开您的Terraform配置文件(例如main.tfbackend.tf)。

删除现有的Terraform云后端配置。
添加新的后端配置以使用S3和DynamoDB。这是一个例子:

terraform {
  backend "s3" {
    bucket         = "<your-s3-bucket-name>"
    key            = "terraform.tfstate"
    region         = "<aws-region>"
    dynamodb_table = "<your-dynamodb-table-name>"
  }
}

注意:用您在步骤1中创建的S3存储桶的名称,使用适当的AWS区域的<aws-region>和带有您创建的DynamoDB表的名称的<aws-region>的名称。

  • 初始化后端:

在包含Terraform配置文件的目录中打开终端或命令提示符。
运行terraform init以初始化新的后端配置并下载任何必要的提供商插件。

  • 迁移现有状态:

(Hashicorp Help Center Docs)

如果您在Terraform Cloud中有现有的Terraform状态,则需要下载并将其迁移到新的后端。
使用terraform state pull命令从Terraform Cloud下载当前状态。

运行terraform init -reconfigure与新的后端重新配置Terraform并将状态上传到S3和DynamoDB。

  • 测试新的后端

运行任何Terraform命令(例如Terraform Plan,Terraform应用)以确保新的后端正常工作。
验证状态文件是否存储在S3存储桶中,并且DynamoDB表用于状态锁定。

  • 清理:

如果您确信迁移成功,则可以删除旧的Terraform云后端配置和关联的状态文件。

  • 迁移您的Terraform CI/CD:

有很多选择可用于Terraform Cloud的更便宜的This文章有关Terraform自动化和协作软件的文章。

有一些DIY Github Actions可以作为您自己的工作流文件的步骤添加。这是一个这样的工具的示例。

披露:我们构建了Digger的Terraform的开源Gitops工具,它可以使用您现有的CI/CD的计算,编排,日志等使用异步工作基础架构。可以随时尝试!