terraform模块如何根据调用者传递的参数(变量)返回不同的值

terraform模块如何根据调用者传递的参数(变量)返回不同的值,terraform,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)

我有这样一个地形模块:

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)返回两个可能值中的一个。如果调用者的值为1,则返回一个值。如果调用者的值为2,则返回另一个值

调用者的值将从调用者地形代码中下来

我该怎么做

谢谢

我认为您所需要的只是一个列表,因为Map并没有提供类似数组的结构,而是提供类似于存储的键值

正如您所说,此代码需要有一个索引才能访问列表项。索引变量名为foo,是数字类型。其余部分由listmapstring完成,它以字符串类型提供列表的映射

在最后一个代码段中,您可以使用前面提供的索引访问该变量

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]
}