Я не могу правильно сослаться на первый общедоступный IP-адрес Azure, созданный с помощью terraform, в группу безопасности сети, созданную с помощью того же сценария terraform.
Я попробовал другой подход, чтобы эта строка была в порядке:
source_address_prefix = "${(count.index == 0 ? var.incoming_ip : azurerm_public_ip.test.0.)}"
Я пытался:
azurerm_public_ip.test.0.name
azurerm_public_ip.test.0.ip_adress
azurerm_public_ip.test[0]
Но при развертывании я получаю ошибку, кажется, что в сценарий передается пустое значение или строка вместо public_ip первого экземпляра, созданного с count.index, равным 0.
resource "azurerm_public_ip" "test" {
name = "publicIP-${count.index}"
location = "${var.regions[count.index]}"
resource_group_name = "${element(azurerm_resource_group.test.*.name, count.index)}"
allocation_method = "Static"
count = "${length(var.regions)}"
}
resource "azurerm_network_security_group" "test" {
name = "${var.nameid[count.index]}"
count = "${length(var.regions)}"
location = "${var.regions[count.index]}"
resource_group_name = "${element(azurerm_resource_group.test.*.name, count.index)}"
security_rule {
name = "SSH"
priority = 1001
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "22"
source_address_prefix = "${var.incoming_ip}"
destination_address_prefix = "*"
}
security_rule {
name = "curl"
priority = 1002
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "${(count.index == 0 ? 8888 : 7777)}"
source_address_prefix = "${(count.index == 0 ? var.incoming_ip : azurerm_public_ip.test.0.)}"
destination_address_prefix = "*"
}
}
Я ожидаю, что эта строка:
source_address_prefix = "${(count.index == 0 ? var.incoming_ip : azurerm_public_ip.test.0.name)}"
будет вести себя таким образом:
если count.index == 0, тогда значение var.incoming_ip elseзначение лазурного публичного ip, созданного с индексом 0.