terraform模块如何基于从调用方传递的参数(变量)返回不同的值

时间:2020-04-05 18:00:28

标签: 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)。如果callervar的值为1,则返回一个值。如果callervar的值为2,则返回另一个值。

callervar的值将从调用方Terraform代码中降低

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您只需要一个List,因为Map不提供类似数组的结构,而是为您提供类似键值的存储。

就像您说的那样,此代码需要具有index才能访问List项目。 index变量名为foo,类型为number。剩下的工作由list(map(string))完成,它为您提供Map类型的Liststring

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

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