Я создал вычислительный модуль с условием создания внешнего IP-адреса.
resource "google_compute_address" "external" {
count = "${var.EXT_IP_CREATE ? 1 : 0}"
name = "${var.NAME}-ext-ip"
address_type = "EXTERNAL"
region = "${var.REGION}"}
В блоке ресурсов вычислительного экземпляра у меня есть следующая конфигурация сетевого интерфейса:
network_interface {
network= "${var.NETWORK}"
network_ip = "${google_compute_address.internal.address}"
access_config {
nat_ip = "${var.EXT_IP_CREATE ? google_compute_address.external.address : 0 }"
}
}
Если ресурс google_compute_address.external не был создан, мне нужно установить для nat_ip значение null или, другими словами, 0.
Похоже, это должно работать, но это не так.
При установке EXT_IP_CREATE в true TF успешно создает ресурс. При установке значения false я получаю следующую ошибку:
Error: Error running plan: 1 error(s) occurred:
* module.compute-dbma-dev.google_compute_instance.compute: 1 error(s) occurred:
* module.compute-dbma-dev.google_compute_instance.compute: Resource 'google_compute_address.external' not found for variable 'google_compute_address.external.address'
Когда я явно передаю nat_ip = 0, TF распознает пустое значение и успешно создает вычислительные экземпляры без внешнего IP.
В настоящее время я использую версию Terraform Terraform v0.11. Вероятно, есть супер простое решение, но я только начинаю с условных обозначений в TF, и я застрял здесь.
Заранее спасибо!
null
невозможно до версии 0.12, но ваша настоящая проблема заключается в том, что вам нужно установить его для всехnetwork_interface
. - person Matt Schuchard   schedule 13.03.2019