TERRAFORM Как настроить count.index в подсети для получения network_security_group_id - PullRequest
0 голосов
/ 15 октября 2018

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

Я пытаюсь связать мои сетевые группы 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 Я пытаюсьimport

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:

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

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

1 Ответ

0 голосов
/ 15 октября 2018

Киран, предполагая, что ваша переменная 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)}"
}

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

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

...