gpt4 book ai didi

terraform - 从数据源在 Terraform 中构建列表

转载 作者:行者123 更新时间:2023-12-05 04:41:46 26 4
gpt4 key购买 nike

我有一个数据管理问题,我一直在努力解决这个问题。我有一些在 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]

如有任何帮助,我们将不胜感激。

最佳答案

我设法通过创建如下所示的本地文件来解决它:

locals {
ips = [ for ip in data.openstack_networking_port_v2.ports: ip.all_fixed_ips[0]]
}

我以前尝试过类似的东西,但错误地迭代了:

data.openstack_networking_port_v2.ports[*]

关于terraform - 从数据源在 Terraform 中构建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69985859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com