Terraform 输出多个子网 ID

mat*_*t01 3 azure terraform terraform-provider-azure

我对 terraform 还很陌生,我正在尝试学习和编写 TF 代码来自动化 Azure VM 部署。我试图将每个部分作为模块(rg 除外)来覆盖,而不是将其保存在单个 main.tf 文件中。

我正在创建一个包含 3 个子网的 Vnet。请找到我的子网模块代码。请帮我解决以下两点。

子网.tf

resource "azurerm_subnet" "SUBNETS" {
for_each=var.Subnetlist
name=each.value.name
address_prefixes=[each.value.address]
  resource_group_name  = var.resource_group_name
  virtual_network_name = var.virtual_network_name
}
Run Code Online (Sandbox Code Playgroud)

网卡tf

resource "azurerm_network_interface" "NETWORKINTERFACE" {
  for_each=var.niclist
  name                = each.value.name
  location            = var.location
  resource_group_name = var.resource_group_name

  ip_configuration {
    name                          = "ipconfig1"
    subnet_id                     = 
    private_ip_address_allocation = "Dynamic"
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 如何输出(三个创建的子网的)subnet_ids。
  2. 如何将这些subnet_id传递给另一个模块(例如创建网络接口)

Mar*_*cin 5

  1. 由于您azurerm_subnet.SUBNETS是由于使用了地图for_each
output "subnet_ids" {
   value = values(azurerm_subnet.SUBNETS)[*].id
}
Run Code Online (Sandbox Code Playgroud)
  1. 您可以将其作为任何其他变量传递:
module "myothermodule" { 
  source = "./modulepath"
  subnets_ids = module.mysubnetmodule.subnet_ids
}
Run Code Online (Sandbox Code Playgroud)