terraform 从变量中获取参数名称
terraform take parameter name from variable
我怎样才能正确地做到这一点?
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}"
}
}
terraform 没有错误,但结果是错误的
tags.${var.vault_tag_name}: ""
tags.%: "3"
tags.Group: "test-dev"
tags.Name: "test-dev"
根据this comment,目前在 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)}"
}
结果;
+ aws_instance.instance
tags.%: "3"
tags.Group: "MyGroup"
tags.Name: "MyName"
tags.MyTagName: "MyTagValue"
我怎样才能正确地做到这一点?
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}"
}
}
terraform 没有错误,但结果是错误的
tags.${var.vault_tag_name}: ""
tags.%: "3"
tags.Group: "test-dev"
tags.Name: "test-dev"
根据this comment,目前在 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)}"
}
结果;
+ aws_instance.instance
tags.%: "3"
tags.Group: "MyGroup"
tags.Name: "MyName"
tags.MyTagName: "MyTagValue"