我如何定义一个Terraform var,它有一个字符串和一个key:value标签映射,可以放入云资源中



我正在尝试定义一个可重复使用的模板,以便与AWS资源一起使用,我需要做的一件事是为包含值的资源声明vars,以及用于标记的key:value映射。例如,vpc有一个CIDR_BLOCK字符串和一个TAGS变量。标记可以是空的,也可以有AWS允许的尽可能多的key:value标记。然而,我不明白为什么它不起作用。

variable vpc {
type = list(object({
cidr_block = string,
tags = map (list(string))
}))
default = [
"10.30.0.0/16",
{ aTag = "aValue" }
]
}

你很接近,如果我正确理解这个问题,你希望CIDR块有关联的标签,对吗?如果是这样的话,那么您的示例只缺少大括号、对象键和映射可能只有string值,因此

variable vpc {
type = list(object({
cidr_block = string,
tags = map(string)
}))
default = [
{
cidr_block = "10.30.0.0/16",
tags = { aTag = "aValue" }
}
]
}

因此,要列举的变化

  • tags类型是map(string)而不是map(list(string)),因为每个密钥应该有一个值

  • 将大括号添加到默认对象

  • 将对象密钥添加到默认对象

如果要分别提供cidr_blockstags,则需要定义多个变量。

最新更新