我有一个数据管理问题,我一直在努力解决。我在 Terrafrom 之外管理了一些 Openstack 资源,我需要找到它们的 IP 地址,然后将它们添加到可以通过 Ansible 或 cloud-init 处理的列表中。这些资源有任意数量,而不是固定的列表大小或名称。
我有资源的名称,所以我正在通过 for_each 查找它们:
data "openstack_networking_port_v2" "ports" {
for_each = toset(var.assigned_ports)
name = "${each.key}port"
}
这会为每个资源生成一个数据源,如下所示:
data.openstack_networking_port_v2.ports["host1port"]
data.openstack_networking_port_v2.ports["host2port"]
data.openstack_networking_port_v2.ports["host3port"]
其中内容包括我通过字段跟踪的 IP 地址(为简洁起见,以下内容被截断):
data "openstack_networking_port_v2" "ports" {
admin_state_up = true
all_fixed_ips = [
"10.1.2.3",
]
all_security_group_ids = [
"2cccdd5f-dec0-4f2e-80a3-ceefbb3625ff",
]
}
我想建立一个本地,它是我可以在某处使用的这些 IP 地址的列表,但我很难去任何地方,特别是因为我所追求的 IP 地址是列表中的元素 0,例如:
data.openstack_networking_port_v2.ports["host3port"].all_fixed_ips[0]
任何帮助将不胜感激。