解决 Terraform openstack_compute_floatingip_v2 资源未找到的问题

54次阅读
没有评论

问题描述

在运行 Terraform 时遇到了以下错误:

openstack_compute_floatingip_v2.sandbox: Creating...
Error: Error creating openstack_compute_floatingip_v2: Resource not found
  with openstack_compute_floatingip_v2.sandbox,
  on main.tf line 31, in resource "openstack_compute_floatingip_v2" "sandbox":
  31: resource "openstack_compute_floatingip_v2" "sandbox" {

尽管存在一个名为 openstack_compute_floatingip_v2 的资源,但在用户的代码中似乎触发了错误。以下是引发错误的代码行:

resource "openstack_compute_floatingip_v2" "sandbox" {
    pool = "public"
}

解决方案

在解决这个问题之前,请确保你已备份了你的 Terraform 配置文件,以防万一。以下是针对这个问题的两个解决方案。

方案1:迁移到 openstack_networking_floatingip_v2

在 Terraform 中,openstack_compute_floatingip_v2 资源已被弃用,推荐使用 openstack_networking_floatingip_v2 资源代替。此外,使用新资源需要显式地关联 openstack_compute_floatingip_associate_v2

下面是如何使用 openstack_networking_floatingip_v2openstack_compute_floatingip_associate_v2 的步骤:

  1. 创建一个 *.tf 文件,例如 main.tf
  2. 在文件中定义 openstack_networking_floatingip_v2 资源。指定所需的 pool
resource "openstack_networking_floatingip_v2" "myip" {
    pool = "pool_name"
}
  1. 在同一个文件中,定义 openstack_compute_floatingip_associate_v2 资源,将上述创建的浮动 IP 关联到实例。
resource "openstack_compute_floatingip_associate_v2" "bridge" {
    floating_ip  = openstack_networking_floatingip_v2.myip.address
    instance_id  = openstack_compute_instance_v2.test-server.id
}

在上面的示例中,我们首先定义了一个 openstack_networking_floatingip_v2 资源,指定了所需的浮动 IP 池。然后,我们使用 openstack_compute_floatingip_associate_v2 资源将创建的浮动 IP 关联到一个实例。

方案2:检查 Terraform 版本和 Provider 版本

有时候,错误可能是由于 Terraform 版本或 Provider 版本不兼容造成的。确保你使用的 Terraform 版本与你的 Provider 版本相匹配,以避免因版本不兼容而导致的问题。你可以通过在终端中运行 terraform version 命令来检查 Terraform 版本,通过查阅相应 Provider 文档来确认 Provider 版本。

总结

在使用 Terraform 进行基础设施管理时,遇到错误是常见的。在解决问题之前,务必仔细检查错误信息,查阅文档,并尝试不同的解决方案。对于此问题,你可以选择迁移到 openstack_networking_floatingip_v2 资源,同时关联 openstack_compute_floatingip_associate_v2,或者检查 Terraform 版本和 Provider 版本是否兼容。

请注意,解决问题之前最好先备份你的配置文件,以免出现意外情况。

注意:以上解决方案可能会根据 Terraform 和 Provider 版本的差异而略有不同,建议在实际操作之前查阅官方文档并进行测试。

正文完