Ссылка на конкретный public_ip, созданный в цикле с помощью terraform - PullRequest
0 голосов
/ 04 октября 2019

Я не могу правильно сослаться на первый общедоступный 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.

1 Ответ

0 голосов
/ 04 октября 2019

Этот синтаксис добился цели:

source_address_prefix      = "${(count.index == 0 ? var.incoming_ip : element(azurerm_public_ip.test.*.ip_address, 0))}"
...