【问题标题】:Terraform Openstack attach pre-allocated Floating IPs to instanceTerraform Openstack 将预分配的浮动 IP 附加到实例
【发布时间】:2020-10-21 19:12:34
【问题描述】:

我有一个用例,我需要重新使用分离的浮动 IP。有没有办法在 Terraform 中做到这一点?我试过了:

`
data "openstack_networking_floatingip_v2" "fips" {
   status = "DOWN"
}
`

获取分离 IP 的列表,但我收到一条错误消息,提示存在多个浮动 IP(这是真的)。​​

有没有一种好方法可以将分离的浮动 IP 作为 terraform 中的数据资源?另一种方法是通过包装脚本使用此处概述的命令传递一组可用 IP:Reuse detached floating IPs in OpenStack

【问题讨论】:

  • 我猜没有办法将分离的浮动 IP 作为 terraform 中的数据资源,因为名称中唯一带有“ip”的数据资源是 openstack_networking_floatingip_v2 并且只返回一个中的id 发现浮动IP:registry.terraform.io/providers/terraform-provider-openstack/…
  • 是的,据我所知,似乎没有一个 openstack 数据资源可以返回多个 IP。

标签: ip terraform openstack floating


【解决方案1】:

对于遇到此问题的其他人,我现在解决了这个问题:

我使用“外部”数据资源调用 openstack cli 来检索可用 ips 的逗号分隔列表。 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>"]
}

从那里我可以在 terraform 中拆分逗号分隔的 ips 字符串并将 ips 作为数组访问:

output available_ips {
    value = split(",", data.external.ips.result.ips)
}

这绝对不是优雅的,我希望 openstack_networking_floatingip_v2 数据资源允许这个功能,我会考虑打开一个问题来添加它。

【讨论】:

    猜你喜欢
    • 2019-08-25
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多