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。
我正在尝试通过 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。