破坏特定的地形基础设施



我使用工作区、局部变量和 -backend-config 使用 terraform 为不同的环境(测试/生产)创建了基础设施,因此只有两个不同的文件,其他文件对于两种环境都是通用的。

不幸的是,我没有找到以同样的方式破坏特定环境的方法(无需为每个环境创建大量特定文件)。

我错过了什么吗?有没有办法做到这一点?

任何帮助将不胜感激。

提前感谢!

问候

弗洛伦特

编辑:感谢您的回答,我设法使用工作区,本地变量和后端配置做了我想做的事情!

您可以使用-target来定位要销毁的特定资源。

terraform destroy 
  -target 'module.default.aws_autoscaling_group.one' 
  -target 'module.default.aws_autoscaling_group.two'

笔记

  • 如果使用countfor_each逻辑,则需要在目标周围引号,这会导致目标名称中的方括号。
  • 单引号更好,因为for_each会返回一个双引号键,如果用双引号将目标括起来,则需要对其进行转义

不要混合使用地形命令init/workspace plan/apply/destroy

所以我想你使用以下命令运行来设置后端(保存 tfstate 文件的位置)

terraform init -backend-config=<path>
terraform get
terraform workspace select <env>

然后,您应该为所有计划,应用和销毁命令使用相同的-var-file=<file>-var 'foo=bar'选项运行以下命令。

terraform plan -var-file=dev/terraformtfvars -var 'foo=bar'
terraform apply -var-file=dev/terraformtfvars -var 'foo=bar'
terraform destroy -var-file=dev/terraformtfvars -var 'foo=bar'

让我知道这是否解释了您的担忧。

使用 Terraform V 0.13

我试图传递tfvars文件来销毁命令,如下所示:

terraform destroy -auto-approve -var-file="env/stage.tfvars"

最新更新