使用现有子网详细信息,而不是在使用Terraform在Azure中创建网络接口时再次创建

时间:2018-09-20 09:27:31

标签: azure terraform terraform-provider-azure

我正在尝试使用以下脚本通过Terraform在Azure中创建网络接口:

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的{​​{1}}文件再次创建另一个网络接口,我该如何再次获得Subnet1值。

如果子网已经存在并且我不想创建它,那么如何设置这些值并使用它们?

编辑

我发现,在Powershell中,这是用于确定子网ID的脚本:

${azurerm_subnet.internal.id}

其中VNetRG-VNet的资源组,
      VNetName-VNet的名称,
      子网1-子网名称。

谁能告诉我terraform中的等效脚本是什么?

1 个答案:

答案 0 :(得分:1)

使用subnet data source

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

然后使用

在您的NIC代码中引用它
subnet_id  = "${data.azurerm_subnet.subnet1.id}"