Создайте балансировщик сетевой нагрузки в 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 есть запись об ошибке .