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

查看:63
本文介绍了如何在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"
}

何时进行地形计划,我会收到一条错误消息,表明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 文件中的变量值:

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天全站免登陆