You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中如何引用for_each创建的特定Azure子网关联NSG?

解决Terraform中引用for_each创建的特定Azure子网ID问题

当你通过for_each创建多个子网后,Terraform会将这些子网资源以**映射(map)**的形式管理,键就是你定义的子网名称。要引用def-subnet的ID,直接通过键名索引即可。

示例代码

  1. 你用for_each创建子网的参考配置:
resource "azurerm_subnet" "subnets" {
  for_each = toset(["def-subnet", "GatewaySubnet"])
  
  name                 = each.key
  resource_group_name  = azurerm_resource_group.example.name
  virtual_network_name = azurerm_virtual_network.example.name
  address_prefixes     = [each.key == "def-subnet" ? "10.0.1.0/24" : "10.0.2.0/24"]
}
  1. 关联def-subnet与指定NSG的配置:
resource "azurerm_subnet_network_security_group_association" "def_subnet_nsg_link" {
  subnet_id                 = azurerm_subnet.subnets["def-subnet"].id
  network_security_group_id = azurerm_network_security_group.def-nsg.id
}

关键说明

  • azurerm_subnet.subnets是你的子网资源名称,后面的["def-subnet"]通过for_each的键名,精准定位到目标子网实例。
  • 这种配置只会为def-subnet建立NSG关联,不会影响GatewaySubnet。

内容的提问来源于stack exchange,提问作者Oleksiy Mumzhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:54:52