terraform从变量中获取参数名称

bre*_*zzz 0 terraform

我怎么能做到这一点?

variable "vault_tag_name" {}
variable "vault_tag_value" {}


resource "aws_instance" "instance" {
  tags {
     Name  = "${var.name}"
     Group = "${var.group_tag}"
     "${var.vault_tag_name}" = "${var.vault_tag_value}"
  }
}
Run Code Online (Sandbox Code Playgroud)

我没有terraform的错误,但结果是错误的

tags.${var.vault_tag_name}:                ""
tags.%:                                    "3"
tags.Group:                                "test-dev"
tags.Name:                                 "test-dev"
Run Code Online (Sandbox Code Playgroud)

小智 7

根据此评论,HCL目前无法使用动态变量名称.

你可以使用zipmap来模拟这个,虽然它有点笨重的解决方法;

locals {
  ec2_tag_keys = ["Name", "Group", "${var.vault_tag_name}"]
  ec2_tag_vals = ["${var.name}", "${var.group_tag}", "${var.vault_tag_value}"]
}

resource "aws_instance", "instance" {
  ...
  tags = "${zipmap(local.ec2_tag_keys, local.ec2_tag_vals)}"
}
Run Code Online (Sandbox Code Playgroud)

结果;

+ aws_instance.instance
      tags.%:                       "3"
      tags.Group:                   "MyGroup"
      tags.Name:                    "MyName"
      tags.MyTagName:               "MyTagValue"
Run Code Online (Sandbox Code Playgroud)