【问题标题】:How to concatenate S3 bucket name in Terraform variable and pass it to main tf file如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件
【发布时间】:2019-11-01 05:11:50
【问题描述】:

我正在编写 terraform 模板来创建两个 S3 存储桶,但是,我的要求是将它们的名称连接到 vars.tf 中,然后将其传递给主 tf 文件。下面是 vars.tf 和主 s3.tf 文件。

vars.tf:

variable TENANT_NAME {
  default = "Mansing"
}

variable BUCKET_NAME {
        type = "list"
        default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]

}

s3.tf:

resource "aws_s3_bucket" "b" {
  bucket = "${element(var.BUCKET_NAME, 2)}"
  acl    = "private"
}

什么时候做 terraform plan 我得到一个错误,表明 var 可能在这里不起作用。

Error: Variables not allowed

  on vars.tf line 10, in variable "BUCKET_NAME":
  10:   default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]

Variables may not be used here.


Error: Variables not allowed

  on vars.tf line 10, in variable "BUCKET_NAME":
  10:   default = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"]

Variables may not be used here.

我尝试用语言环境替换 vars 文件中的 var,但没有成功。

【问题讨论】:

  • 格式("%s/%s", var.var1, var.var2)
  • 如果你想使用变量作为其他变量默认值的一部分进行插值,那么你需要使用local:terraform.io/docs/configuration/locals.html
  • 当我使用本地人时同样的错误。 ``` 变量 TENANT_NAME { default = "mansing" } locals { first_env = "bh.${var.TENANT_NAME}.o365.attachments" second_env = "bh.${var.TENANT_NAME}.o365.eml" } 变量 BUCKET_NAME {类型 = “列表” 默认 = [local.first_env, local.second_env] } ```
  • 当我在 Main.tf 中使用 Locals 而不是在 vars.tf 中使用它并且还使用了 vars.tf 中定义的变量时,它起作用了。 locals { s3_names = ["bh.${var.TENANT_NAME}.o365.attachments", "bh.${var.TENANT_NAME}.o365.eml"] }

标签: amazon-s3 terraform terraform-provider-aws


【解决方案1】:

您可以使用 Terraform locals 块来连接 s3.tf 文件中的变量值:

locals {
  BUCKET_NAME = [
    "bh.${var.TENANT_NAME}.o365.attachments",
    "bh.${var.TENANT_NAME}.o365.eml"
  ]
}

resource "aws_s3_bucket" "b" {
  bucket = "${element(local.BUCKET_NAME, 2)}"
  acl    = "private"
}

【讨论】:

    猜你喜欢
    • 2022-12-01
    • 2021-04-04
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多