Используйте существующие сведения о подсети вместо повторного создания при создании сетевого интерфейса в Azure с использованием terraform - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь создать сетевой интерфейс в Azure через terraform, используя следующий скрипт:

resource "azurerm_subnet" "internal" {
  name                 = "Subnet1"
  resource_group_name  = "${var.VNetResourceGroup}"
  virtual_network_name = "${var.VNetName}"
  address_prefix       = "10.0.2.0/24"
}

resource "azurerm_network_interface" "main" {
  name                = "${var.prefix}-nic"
  location            = "${var.location}"
  resource_group_name = "${var.resourceGroup}"

  ip_configuration {
    name                          = "ipconfig1"
    subnet_id                     = "${azurerm_subnet.internal.id}"
    private_ip_address_allocation = "dynamic"
  }
}

Этот скрипт создает подсеть Subnet1 и присваивает ей Subnet.id в ipconfiguration.

Но если мне нужно снова создать другой сетевой интерфейс через другой файл .tf с тем же Subnet1, как мне снова получить значение ${azurerm_subnet.internal.id}.

То есть, если подсеть уже существует, и я не хочу ее создавать, как мне установить эти значения и использовать их?

РЕДАКТИРОВАТЬ

Я выяснил, в PowerShell это скрипт, используемый для определения идентификатора подсети:

$vnetId= "[resourceId("VNetRG",'Microsoft.Network/virtualNetworks', "VNetName")]"
$subnetRef = "[concat($vnetId, '/subnets/', "Subnet1")]"

, где VNetRG - группа ресурсов виртуальной сети,
VNetName - имя виртуальной сети,
Subnet1 -Название подсети.

Может кто-нибудь сказать мне, что эквивалентный скрипт в terraform?

1 Ответ

0 голосов
/ 20 сентября 2018

Используйте подсеть источник данных :

data "azurerm_subnet" "subnet1" {
  name                 = "Subnet1"
  virtual_network_name = "${var.VNetName}"
  resource_group_name  = "${var.VNetResourceGroup}"
}

Затем укажите его в своем коде NIC с помощью

subnet_id  = "${data.azurerm_subnet.subnet1.id}"
...