terraform - 使用一个循环和多个字符串创建语句遍历映射列表
问题描述
我有以下代码:
locals {
all_nodes_verbose_etcd = [for k, v in var.virtual_machines:
format("%s ip=%s etcd_instance=%s", v.name, v.ipv4_address, v.etcd_instance)
if length(v.etcd_instance) > 0]
all_nodes_verbose = [for k, v in var.virtual_machines:
format("%s ip=%s", v.name, v.ipv4_address)
if length(v.etcd_instance) == 0]
master_nodes = [for k, v in var.virtual_machines:
v.name
if v.worker_node != true]
etcd_nodes = [for k, v in var.virtual_machines:
v.name
if length(v.etcd_instance) > 0]
}
无论如何这可以改变,这样我只需要一个 for 循环?
我的 virtual_machines 地图列表看起来像这样(不是全部 - 但足以让您了解它的样子):
variable "virtual_machines" {
default = {
"master1" = {
name = "z-ca-bdc-master1"
worker_node = false
etcd_instance = "etcd1"
ipv4_address = "192.168.113.79"
ipv4_netmask = "22"
ipv4_gateway = "192.168.112.1"
dns_server = "192.168.112.2"
ram = 8192
logical_cpu = 4
disk0_size = 40
disk1_size = 0
},
"master2" = {
name = "z-ca-bdc-master2"
worker_node = false
etcd_instance = "etcd2"
ipv4_address = "192.168.113.80"
ipv4_netmask = "22"
ipv4_gateway = "192.168.112.1"
dns_server = "192.168.112.2"
ram = 8192
logical_cpu = 4
disk0_size = 40
disk1_size = 0
},
这是我想要的伪代码:
locals {
for k, v in var.virtual_machines:
all_nodes_verbose_etcd = [format("%s ip=%s etcd_instance=%s", v.name, v.ipv4_address, v.etcd_instance)
if length(v.etcd_instance) > 0]
all_nodes_verbose = [format("%s ip=%s", v.name, v.ipv4_address)
if length(v.etcd_instance) == 0]
master_nodes = [v.name
if v.worker_node != true]
etcd_nodes = [v.name
if length(v.etcd_instance) > 0]
}
解决方案
推荐阅读
- docker - 码头工人撰写 | 无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。docker 守护进程是否正在运行?
- android - Gradle 6.5 AS 4.1 设置 outputFileName got The value for this property cannot be changed any further error
- javascript - 为什么Javascript不能读取占用的Value?TypeError:无法读取未定义的属性“权重”
- javascript - 如何在客户端设置默认 HTTP 标头并使用 Meteor 在服务器方法中访问它们?
- .net - .Net core 3.1 发布后未找到 Antiforgery.dll
- javascript - 为 Struts2 迭代器列表实现分页
- sql - ORA-00984: 在插入不包括序列触发器的数据时,此处不允许列
- javascript - 如何从引导吐司消息中删除任何间距?
- python-3.x - 代理没有连接。Python 3 请求模块
- c++ - 修改成员变量的 C++ 回调