摧毁特定的地形基础设施

问题描述 投票:0回答:3

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

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

我错过了什么吗?有办法做到吗?

如有任何帮助,我们将不胜感激。

提前致谢!

问候,

弗洛伦特

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

terraform terraform-provider-aws
3个回答
10
投票

您可以使用

-target
来瞄准要销毁的特定资源。

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

注释

  • 如果使用
    count
    for_each
    逻辑,则需要在目标周围加上引号,这会导致目标名称中出现方括号。
  • 单引号更好,因为
    for_each
    会返回一个双引号键,如果用双引号包围目标,则需要转义该键
  • 有时,如果目标计划/应用/销毁相互依赖,它们仍然可以包含额外资源

2
投票

使用 Terraform V 0.13

我尝试传递

tfvars
文件来销毁这样的命令:

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

0
投票

请勿将 terraform 命令

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'

请告诉我这是否能解释您的担忧。

© www.soinside.com 2019 - 2024. All rights reserved.