问题描述
我有一个用例,需要重新使用分离的浮动IP。有没有办法在Terraform中做到这一点?我尝试过:
`
data "openstack_networking_floatingip_v2" "fips" {
status = "DOWN"
}
`
获取分离的IP的列表,但是我收到一个错误消息,说存在多个浮动IP(这是事实)。
是否有一种很好的方法将分离的浮动IP作为terraform中的数据资源?替代方法是通过包装器脚本使用此处概述的命令传递一组可用IP:Reuse detached floating IPs in OpenStack
解决方法
对于遇到此问题的任何人,这是我暂时解决的问题:
我使用“外部”数据资源调用openstack cli来检索可用ip的逗号分隔列表。 openstack cli命令如下所示:
openstack floating ip list --status DOWN -f yaml -c "Floating IP Address"
为了获得适合terraform外部数据资源的格式的输出,我使用了python脚本。脚本会输出一个如下所示的json对象:{ips =“ ip.1.2.3,ip.4.5.6,ip.7.8.9”}
terraform中的外部数据资源如下所示:
data "external" ips {
program = ["python","<path-to-python-script>"]
}
从那里,我可以将ips的逗号分隔字符串拆分为terraform并以数组形式访问ips:
output available_ips {
value = split(",",data.external.ips.result.ips)
}
这绝对不是很优雅,我希望openstack_networking_floatingip_v2数据资源可以使用此功能,我将研究一个问题来添加它。