Terraform 地形临时资源

Terraform 地形临时资源,terraform,Terraform,我们使用的是terraform,我试图让开发人员能够为开发提供随需应变的资源 一个用例是:我已经打开了一个新分支,编写了一些代码,我想在EC2实例+RDS实例对上运行一些东西。是否有一种最佳实践方法可以使用terraform动态地旋转这些资源 我倾向于创建一个terraform模块,该模块接收变量,然后使开发人员能够通过命令行提供变量: terraform apply -var 'ec2_instance_type=m4.xlarge' -var 'rds_instance_type=db.m4

我们使用的是
terraform
,我试图让开发人员能够为开发提供随需应变的资源

一个用例是:我已经打开了一个新分支,编写了一些代码,我想在EC2实例+RDS实例对上运行一些东西。是否有一种最佳实践方法可以使用terraform动态地旋转这些资源

我倾向于创建一个terraform模块,该模块接收变量,然后使开发人员能够通过命令行提供变量:

terraform apply -var 'ec2_instance_type=m4.xlarge' -var 'rds_instance_type=db.m4.xlarge' 
但我不确定这是否是正确的方法

有人有这方面的经验吗?我的问题是:

  • 让这些临时资源生活在遥远的地形状态是否危险
  • terraform应该这样使用,还是应该编写原始的awscli脚本
  • 有没有办法在一段时间后自动删除这些资源
非常感谢你的帮助

查看或类似,例如,自动运行测试

使用的测试厨房将以自动化方式管理案例,而不是手动设置

当运行测试厨房时,它将开始运行terraforminit/plan/apply,运行测试并销毁所有资源

如果您对此有任何疑问,请告诉我。

这当然不是Terraform的常见用例,但您可以将Terraform作为更大系统的一部分来处理实际发生更改的机制

听起来好像每个开发人员的资源都有一个单独的生命周期,因此我将通过为每个开发人员创建一个单独的状态文件,然后构建一个自定义包装工具来对此进行建模,以确保Terraform只以两种特定方式运行:

  • 创建开发环境:给定一个标识符(用户名?)和输入变量的值,创建一个以该标识符命名的新环境,并在其中运行
    terraformapply
  • 更新/重新旋转开发环境:类似于创建,但适用于现有工作区
  • 销毁环境:给定一个标识符,切换到适当的工作区并运行
    terraform Destroy
    。如果成功,请删除工作区
如果您能够为更新操作重新提供所有必要的设置,那么除了Terraform远程后端之外,无需额外存储即可完成上述操作。您可以选择让包装器将每个环境的输入值保存在某个位置,以便可以调用它们以应用更新,并在销毁成功后最终丢弃

Terraform的主要工作流程针对长期基础设施的持续维护进行了优化,但通过一些额外的脚本编写,您可以利用其核心操作,将期望的结果转化为一组操作作为一个组件,同时围绕它构建不同的更高级别的工作流程