【发布时间】:2021-01-04 23:14:53
【问题描述】:
我正在尝试使用 Terraform 从范围中提取 IP 地址。
例如,我将这个范围192.168.1.10-192.168.1.20 定义为一个字符串,我想得到一个这样的列表:[192.168.1.10,192.168.1.11,…,192.168.1.20]。
我检查了Terraform functions,但没有找到方法。
这可能吗?
关于进一步的上下文,我在 Kubernetes 集群中部署 MetalLB,需要将 VIP 范围定义为类似 192.168.1.10-192.168.1.20 的字符串。
Kubernetes 集群部署在 OpenStack 上,我需要配置 Neutron OpenStack 端口以接受此范围内的所有 IP 地址:
resource "openstack_networking_port_v2" "k8s_worker_mgmt_port" {
name = "k8s_worker_mgmt_port"
network_id = data.openstack_networking_network_v2.k8s_openstack_mgmt_network_name.id
admin_state_up = "true"
allowed_address_pairs {
ip_address = "192.168.1.10"
}
allowed_address_pairs {
ip_address = "192.168.1.11"
}
}
....
}
【问题讨论】:
-
你能解释一下你想用这个输出实现什么吗?您可能可以使用
range、formatlist和其他一些功能的混合来做到这一点,但如果您也可以分享这部分,可能会有更好的方法来实现您的总体目标。 -
在您的示例中,您只需更改 IP 中的最后一个数字。像这样的情况呢:
192.168.1.10-192.168.2.10?即使您生成此类列表,也并非所有 IP 地址都可用。 -
@ydaetskcoR,我编辑了我的帖子以添加上下文
-
谢谢。从输入
192.168.1.10-192.168.1.20你想要一个以192.168.1.11开头并以192.168.1.20结尾的列表,对吗? -
@ydaetskcoR 是的,完全正确
标签: terraform