azure - 使用 terraform 在 Azure 中创建网络接口(interface)时,使用现有的子网详细信息而不是再次创建

标签 azure terraform terraform-provider-azure

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

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 并在 ipconfiguration 中分配该 Subnet.id

但是,如果我必须通过具有相同 Subnet1 的另一个 .tf 文件再次创建另一个网络接口(interface),我该如何获取 ${azurerm_subnet.再次输入internal.id}值。

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

编辑

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

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

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

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

最佳答案

使用 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}"

关于azure - 使用 terraform 在 Azure 中创建网络接口(interface)时,使用现有的子网详细信息而不是再次创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52421779/

相关文章:

Azure CLI - 将文件从一个容器前缀复制到另一个容器前缀

git - 无法使用 Visual Studio Team Services 设置 Web 应用程序的部署源...找不到带指纹的证书

azure - 在达到预算之前发出有关 azure 成本的警报

amazon-web-services - Terraform 和 AWS : modify an existing policy

amazon-web-services - 如何在 terraform 中旋转时将现有 IAM 角色设置为新实例

azure - 有没有办法备份或导出Azure IOT组件?

azure - Terraform 输出多个子网 ID

postgresql - 如何从 terraform 中 Azure 托管 PostgreSQL 的现有备份文件恢复数据库?

azure - 如何避免通过terraform脚本更新应用程序网关的后端池

terraform-provider-azure - terraform 0.12 应用程序网关 ssl 证书问题