Создайте балансировщик сетевой нагрузки в Oracle Cloud Infrastructure с зарезервированным IP-адресом с помощью Terraform.

Используя Terraform для настройки балансировщика сетевой нагрузки в Oracle Cloud Infrastructure, он работает должным образом, если создан с использованием эфемерного общедоступного IP-адреса, однако созданный с использованием зарезервированного общедоступного IP-адреса не отвечает. Вот точные ресурсы Terraform, использованные для создания балансировщика нагрузки:

      resource "oci_core_public_ip" "ip" {
  for_each = { for lb in var.load_balancers: lb.subnet => lb if ! lb.private 
  compartment_id = local.compartment_ocid
  display_name   = "${var.name}-public-ip"
  lifetime       = "RESERVED"
  lifecycle {
    prevent_destroy = true
  }
}

resource "oci_network_load_balancer_network_load_balancer" "nlb" {
  for_each = { for lb in var.load_balancers: lb.subnet => lb if lb.type == "network" }
  compartment_id      = local.compartment_ocid
  display_name        = "${var.name}-network-load-balancer"
  subnet_id           = oci_core_subnet.s[each.value.subnet].id
  is_private          = each.value.private
 #reserved_ips {
 #  id = oci_core_public_ip.ip[each.value.subnet].id
 #}
}

Все остальные ресурсы: правила списка безопасности, слушатели, набор бэкендов и бэкэнды и т. д. и т. д. создаются таким образом, чтобы все вышеперечисленное работало. Однако если я раскомментирую назначениеreserved_ipsк балансировщику сетевой нагрузки, то он не работает: нет ответа от общедоступного IP-адреса балансировщика нагрузки. Все то же самое, за исключением того, что эти три строки не закомментированы.

Между каждым тестом я сношу все и воссоздаю с помощью Terraform. Он всегда работает с эфемерным IP-адресом и никогда не работает с зарезервированным IP-адресом. Почему? Что мне не хватает? Или это просто не работает, как рекламируется?

Версия Terraformv1.3.4и версия ресурсаoracle/ociверсия4.98.0.

1 ответ

Зарезервированный IP-адрес настроен правильно, однако поставщик terraform удаляет его связь с частным IP-адресом балансировщика нагрузки. Более внимательное изучение выходных данных Terraform показывает это.

        ~ resource "oci_core_public_ip" "ip" {
        id                   = "ocid1.publicip.oc1.uk-london-1.ama...sta"
      - private_ip_id        = "ocid1.privateip.oc1.uk-london-1.abw...kya" -> null
        # (11 unchanged attributes hidden)
    }

Замена вручную исправляет это (до следующего запуска tf)

      $ oci network public-ip update --public-ip-id ocid1.publicip.oc1.uk-london-1.ama...rrq --private-ip-id ocid1.privateip.oc1.uk-london-1.abw...kya

На github Terraform есть запись об ошибке .

Другие вопросы по тегам