Terraform openstack заставляет новый ресурс - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь развернуть некоторую инфраструктуру через 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 голосов
/ 24 сентября 2018

Я давно не использовал OpenStack, но похоже, что имя сети не чувствительно к регистру в OpenStack, поэтому ваш экземпляр помещается в сеть Default network, несмотря на то, что в конфигурации было указано другое сетевое имя сети (Default Network).

Поскольку атрибут network.name установлен как ForceNew, Terraform обнаруживает дрейф между конфигурацией и провайдером и говорит, что ему необходимо создать новый ресурс.Простое обновление вашей конфигурации в соответствии с тем, что использует провайдер, в этом случае должно подойти.

Обычный способ исправить это должным образом в провайдере - это использовать DiffSuppresFunc, который заставляет Terraform игнорировать разницу между конфигурацией ипоставщик.Ресурс openstack_compute_instance_v2 уже использует это для подавления различий в зонах доступности .

...