我有一个类似terraform的模块:
variable "whitelist_map" {
type = "map"
default = {
"10.1.1.1/32" = "alb_external_facing"
"10.2.2.2" = "jenkins_lb"
}
}
output "whitelist_map" {
value = "${var.whitelist_map}"
}
但是,我希望whitelist_map
返回基于变量的两个可能值之一(比如callervar
)。如果callervar
的值为1,则返回一个值。如果callervar
的值为2,则返回另一个值。
callervar
的值将从调用方Terraform代码中降低
我该怎么做?
谢谢!
答案 0 :(得分:1)
我认为您只需要一个List
,因为Map
不提供类似数组的结构,而是为您提供类似键值的存储。
就像您说的那样,此代码需要具有index
才能访问List
项目。 index
变量名为foo
,类型为number
。剩下的工作由list(map(string))
完成,它为您提供Map
类型的List
个string
。
在最后一个代码段中,您可以使用我们之前提供的索引访问该变量。
variable "foo" {
type = number
}
variable "whitelist_list" {
type = list(map(string))
default = [
{ "10.1.1.1/32" = "alb_external_facing" },
{ "10.2.2.2" = "jenkins_lb" }
]
}
output "whitelist" {
value = var.whitelist_list[var.foo]
}