首页 > 解决方案 > 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 代码

我怎么做?

谢谢!

标签: terraform

解决方案


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

就像你说的,这个代码需要有一个index访问该List项目的权限。该index变量被命名为foo并且是number类型。其余的由list(map(string))它为您提供类型MapLists 来完成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]
}

推荐阅读