如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件 [英] How to concatenate S3 bucket name in Terraform variable and pass it to main tf file

查看:11
本文介绍了如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm writing terraform templates to create two S3 buckets, however, my requirement is to concatenate their names in vars.tf and then pass it to main tf file. Below is the vars.tf and main s3.tf file.

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 可能在这里不起作用.

When do terraform plan I get an error indicating that var may not work 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.


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,但没有成功.

I tried replacing var in vars file with locale but did not work.

推荐答案

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

You can use Terraform locals block to concatenate variable values in the s3.tf file:

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"
}

这篇关于如何在 Terraform 变量中连接 S3 存储桶名称并将其传递给主 tf 文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆