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.tf
,backend.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
以初始化新的后端配置并下载任何必要的提供商插件。
- 迁移现有状态:
如果您在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的计算,编排,日志等使用异步工作基础架构。可以随时尝试!