Terraform中如何引用for_each创建的特定Azure子网关联NSG?
解决Terraform中引用for_each创建的特定Azure子网ID问题
当你通过for_each创建多个子网后,Terraform会将这些子网资源以**映射(map)**的形式管理,键就是你定义的子网名称。要引用def-subnet的ID,直接通过键名索引即可。
示例代码
- 你用
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"] }
- 关联
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
相关产品推荐
相关产品推荐

