Terraform openstack 强制新资源

Terraform openstack forces new resource

我正在尝试通过 Terraform 部署一些基础设施。我第一次 运行 应用它部署虚拟机没有问题,但如果我 运行 再次应用它想要 运行 销毁并重新部署虚拟机,即使配置没有更改。我从输出中看到的是因为 id 和 network.o.name,我不确定为什么这会导致问题

resource "openstack_compute_instance_v2" "test" {
  name            = "test_server"
  image_id        = "image_id"
  flavor_id       = "flavour_id"
  key_pair        = "test"
  security_groups = ["default"]

  network {
    name = "Default Network"
  }
}

id: "16342cd6-7f26-4a77-9c3f-11c626400f4f" =>(强制新资源)

网络。0.name:"Default network" => "Default Network"(强制新资源)

我很长时间没有使用 OpenStack,但看起来 OpenStack 中的网络名称不区分大小写,因此尽管指定了不同大小写的网络名称,但您的实例仍被放置在 Default network 网络中在配置中 (Default Network).

因为 network.name attribute is set as ForceNew 然后 Terraform 检测到配置和提供者之间的偏差,并表示需要创建新资源。在这种情况下,只需更新您的配置以匹配提供商正在使用的内容就可以了。

在提供程序中正确修复此问题的正常方法是使用 DiffSuppresFunc,这会使 Terraform 忽略配置和提供程序之间的差异。 openstack_compute_instance_v2 资源已将其用于 suppress differences in availability zones