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 代码
我怎么做?
谢谢!
解决方案
我认为您所需要的只是一个List
,因为Map
它不提供类似数组的结构,而是为您提供类似键值的存储。
就像你说的,这个代码需要有一个index
访问该List
项目的权限。该index
变量被命名为foo
并且是number
类型。其余的由list(map(string))
它为您提供类型Map
的List
s 来完成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]
}
推荐阅读
- r - 有没有办法使用平均值(SE)而不是 R 中的计数来实现平面表?
- django - 未找到没有参数的“create_order”反向。尝试了 1 种模式:['create_order/(?P
[^/]+)/$'] - salesforce - 更新日期字段时出现内部 Salesforce.com 错误?
- django - 覆盖默认管理站点 - 找不到 myproject
- javascript - 使用 Redux 创建 put api 请求
- sql - SQL 开发人员中的日期转换返回错误
- sql - 如何对两个表sql的数据求和
- netsuite - Netsuite - OneWorld 税收和 Nexus
- javascript - gatsby 默认会移除 proptypes 吗?
- html - 如何转换保存在db中的二进制图像数据并在浏览器中显示