Terraform OpenStack推动了新资源

时间:2018-09-24 07:23:49

标签: openstack terraform

我正在尝试通过terraform部署一些基础架构。我第一次运行Apply时,它不会部署vm,但是即使我对配置没有任何更改,如果我再次运行Apply时,它也想运行destroy并重新部署vm。我从输出中看到的这是由于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” =>(强制使用新资源)

network.0.name:“默认网络” =>“默认网络”(强制使用新资源)

1 个答案:

答案 0 :(得分:0)

我已经很长时间没有使用过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