【问题标题】:Destroying specific terraform infrastructure破坏特定的 terraform 基础设施
【发布时间】:2019-06-08 19:04:28
【问题描述】:

我使用工作空间、locals 和 -backend-config 使用 terraform 为不同的环境(测试/产品)创建了基础架构,因此只有两个不同的文件,其他文件对于两个环境都是通用的。

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

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

任何帮助将不胜感激。

提前致谢!

问候,

弗洛伦特

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

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    不要将 terraform 命令 init/workspaceplan/apply/destroy 混合使用。

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

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

    然后,您应该在所有计划、应用和销毁命令中使用相同的 -var-file=&lt;file&gt;-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'
    

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

    【讨论】:

    • 您好,感谢您的回答。我不确定为什么我不应该混合使用 init/workspace 和 plan/apply/destroy,你能解释一下吗?此刻,我在我的 .tf 文件中使用本地人,所以如果我正确理解你在说什么,我应该为变量创建单独的文件并告诉 terraform 将它与 -var-file 参数一起使用?我是使用 terraform 的新手,如果有些问题对你来说很愚蠢,我很抱歉!谢谢你:)
    • 我调整答案,你可以用-var-file=dev/terraformtfvars-var-file=prod/terraformtfvars管理环境
    【解决方案2】:

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

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

    注意:如果使用countfor_each 逻辑导致目标名称中出现方括号,则需要在目标周围加上引号。

    【讨论】:

      【解决方案3】:

      使用 Terraform V 0.13

      我试图通过tfvars 文件来销毁这样的命令:

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

      【讨论】:

        猜你喜欢
        • 2020-05-17
        • 1970-01-01
        • 1970-01-01
        • 2021-11-04
        • 2021-04-29
        • 1970-01-01
        • 2016-04-26
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多