代码之家  ›  专栏  ›  技术社区  ›  CrazyCoder

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

  •  0
  • CrazyCoder  · 技术社区  · 7 年前

    我正在尝试使用以下脚本通过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 使用相同的 ,如何获取 ${azurerm_subnet.internal.id} 再次重视。

    编辑

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

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

    其中VNetRG—VNet的资源组,

    Subnet1—子网的名称。

    1 回复  |  直到 7 年前
        1
  •  2
  •   KJH    7 年前

    使用 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}"
    
    推荐文章