使用Terraform检索Azure VNET子网ID

时间:2019-01-03 18:21:47

标签: azure terraform

我想使用 azurerm_virtual_network 数据源从Azure中的现有VNET检索/提取子网ID。我的以下代码无法正常工作。任何帮助表示赞赏。

data "azurerm_virtual_network" "vnet" {
  name                 = "my-vnet"
  resource_group_name  = "my-resource-group"
}

output "my-subnets-ids" {
  value = "${data.azurerm_virtual_network.vnet.subnets.id}"
}

我执行时收到以下错误。

output.my-subnets: Resource 'data.azurerm_virtual_network.vnet' 
does not have attribute 'subnets.id' for variable
'data.azurerm_virtual_network.vnet.subnets.id'

3 个答案:

答案 0 :(得分:1)

我会将其与subnet数据资源结合起来,并使用它来获取所有ID。这段代码很接近,我没有时间把它整理起来并弄清楚完整的语法。

data "azurerm_subnet" "test" {
    name                 = "${data.azurerm_virtual_network.vnet.subnets[count.index]}"
    virtual_network_name = "${data.azurerm_virtual_network.vnet.name}"
    resource_group_name  = "${data.azurerm_virtual_network.vnet.resource_group_name"
    count = "${count(data.azurerm_virtual_network.vnet.subnets)}"
}

 output "subnet_ids" {
     value = "${data.azurerm_subnet.test.*.id}"
 }

答案 1 :(得分:0)

根据this,它仅包含子网名称列表,而不包含其ID,因此您需要手动构建子网。最简单的方法-使用vnet.id并添加'/subnets/${each subnet name goes here}'

答案 2 :(得分:0)

您可以通过以下方式获得:

data.azurerm_virtual_network.vnet.subnet.*.id

这将是一个列表,要获取第一个成员,请使用:

data.azurerm_virtual_network.virtualNetwork1.subnet.*.id[0]