TERRAFORM Как настроить count.index в подсети для получения network_security_group_id

Думаю, у меня довольно плохая логика!

Я пытаюсь связать свои сетевые группы Azure с моей подсетью

Вот моя конфигурация группы безопасности

resource "azurerm_network_security_group" "azure_nsg" {
  depends_on = ["azurerm_virtual_network.vnet"]
  location = "${var.region}"
  name = "${var.nsg_names[count.index]}" // I think my problem is here
  resource_group_name = "${azurerm_resource_group.vnet.name}"
  count = "${length(var.nsg_names)}"
}

Из этого count.index я пытаюсь импортировать

resource "azurerm_subnet" "subnet" {
  depends_on = ["azurerm_network_security_group.private"]
  name                      = "${var.subnet_names[count.index]}"
  virtual_network_name      = "${azurerm_virtual_network.vnet.name}"
  resource_group_name       = "${azurerm_resource_group.vnet.name}"
  address_prefix            = "${var.subnet_prefixes[count.index]}"
  network_security_group_id = "${lookup(var.nsg_ids,var.subnet_names[count.index],"")}"
  count                     = "${length(var.subnet_names)}"
}

Но я не могу получить доступ к network_security_group_id с помощью [count.index] или карты.

 * azurerm_subnet.subnet.1: [ERROR] Unable to Parse Network Security Group ID 'databasensg': Cannot parse Azure ID: parse databasensg: invalid URI for request
    * module.azure_vnet.azurerm_subnet.subnet[2]: 1 error(s) occurred:

    * azurerm_subnet.subnet.2: [ERROR] Unable to Parse Network Security Group ID 'jumpboxnsg': Cannot parse Azure ID: parse jumpboxnsg: invalid URI for request
    * module.azure_vnet.azurerm_network_security_group.azure_nsg[1]: 1 error(s) occurred:

Экспертам по терраформингу это будет очень легко.

Пожалуйста, помогите здесь,


person Kiran KH    schedule 15.10.2018    source источник


Ответы (1)


Киран, предполагая, что ваша переменная nsg_names является списком, вы можете использовать следующее:

resource "azurerm_network_security_group" "azure_nsg" {
  depends_on = ["azurerm_virtual_network.vnet"]
  location = "${var.region}"
  name = "${element(var.nsg_names, count.index)}"
  resource_group_name = "${azurerm_resource_group.vnet.name}"
  count = "${length(var.nsg_names)}"
}

Вы должны использовать то же самое в других поисках, которые вы выполняете в других ресурсах.

Подробнее об этой функции интерполяции можно узнать здесь .

person Nathan Smith    schedule 15.10.2018