【问题标题】:Terraform: Build resource in one environmentTerraform:在一个环境中构建资源
【发布时间】:2021-02-19 12:00:41
【问题描述】:

我只想在使用我们的 prod 帐户时构建一个 s3 存储桶。我们使用的是 terraform 11.7,我认为它不支持 if 语句的“null”选择

有谁知道这样的事情是否可以在 terraform 11 中完成:

resource "aws_s3_bucket" "feedback_service_bucket" {
  bucket = "${var.account_name == "prod" ? "ces-${var.environment}-QA-compendex" : null}" 
  acl = "private"

}

我将很快升级到 terraform 13,但由于本次 sprint 需要升级,所以我没有时间。我们有一个 prod.tfvars 文件,它在应用环境设置为 prod 时使用(显然),所以如果上述不可行,有没有办法将整个资源放入 tfvars 文件中。我知道你可以使用变量,但我不确定资源。任何帮助都会很棒,谢谢

【问题讨论】:

    标签: amazon-web-services amazon-s3 terraform


    【解决方案1】:

    有谁知道这样的事情是否可以在 terraform 11 中完成:

    您可以在这种情况下使用count

    resource "aws_s3_bucket" "feedback_service_bucket" {
      count = "${var.account_name == "prod" ? 1 : 0}"
      bucket = "ces-${var.environment}-QA-compendex" 
      acl = "private"
    }
    

    你可以参考这个:https://www.terraform.io/docs/configuration-0-11/interpolation.html#conditionals

    我将很快升级到 terraform 13,但由于这个 sprint 需要升级,所以我没有时间。

    关于信息,Terraform 0.13 不会为您提供这个特定用例的太多优势。你仍然会使用count。 0.13 中关于条件资源的变化是您可以使用 for_each 的替代方法 - 随 v0.12 引入 - 并且您可以实现相同的行为。

    【讨论】:

      猜你喜欢
      • 2017-09-21
      • 2022-01-23
      • 2020-12-17
      • 2022-07-28
      • 2021-05-21
      • 2021-11-04
      • 1970-01-01
      • 2018-06-26
      • 2021-02-18
      相关资源
      最近更新 更多