terraform - 如何使用用户提供的变量访问嵌套地图中的元素?
问题描述
我试图找出根据输入变量从映射变量中查找多个值的最佳方法。在这种情况下,输入将是 vSphere 交换机端口组的名称。
例如,给定以下信息:
variable "networks" {
type = map
default = {
"port-group-mail.internal" = {
network = "10.0.10.0"
netmask = "24"
gateway = "10.0.10.1"
}
"port-group-web.dmz" = {
network = "10.0.50.32"
netmask = "27"
gateway = "10.0.50.33"
}
}
}
用法:
module "myvm" {
vm_name = "web-01"
network = "port-group-web.dmz"
}
我希望能够根据network
我模块中的变量查找“网络”、“网络掩码”、“网关”。
解决方案
考虑以下变量(这基本上是您的network
模块变量):
variable "my_network" {
type = string
default = "port-group-web.dmz"
}
现在,如果我这样做,var.networks[<my variabl>]
我可以访问地图:
$ terraform console
> var.my_network
"port-group-web.dmz"
> var.networks[var.my_network]
{
"gateway" = "10.0.50.33"
"netmask" = "27"
"network" = "10.0.50.32"
}
推荐阅读
- wpf - 集合更新时多重绑定不更新
- android - 如何强制特定依赖项在 gradle 中使用特定版本的库
- javascript - 如何从 Blazor C# 代码调用静态 JavaScript 方法
- mysql - sql group by语句如何减法
- angular7 - 如何从浏览器中运行的前端 JavaScript 代码调用 Agora API?
- machine-learning - 如果输出层(标签)由 one-hot 向量和零向量组成,使用什么损失函数?
- hyperledger - ubuntu 中的 Indy Node 安装问题
- xampp - XAMPP安装和控制面板问题
- c - 有什么方法可以在 C 中巧妙地创建一个函数,以便它在不同的参数值中执行不同的函数?
- angular - 将表单重置为其最初设置的值