azure Bicep -可选添加网络安全组

t40tm48m  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(126)

我正在使用以下二头肌创建子网:

resource nsg 'Microsoft.Network/networkSecurityGroups@2023-05-01' existing = {
  name: networkSecurityGroupName
}
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = {
  name: name
  parent: vnet
  properties: {
    addressPrefix: range
    networkSecurityGroup: {
      id: nsg.id
    }
    delegations: [
      {
        name: 'delegation'
        properties: {
          serviceName: 'Microsoft.Web/serverfarms'
        }
        type: 'Microsoft.Network/virtualNetworks/subnets/delegations'
      }
    ]
    privateEndpointNetworkPolicies: 'Disabled'
    privateLinkServiceNetworkPolicies: 'Enabled'
  }
}

字符串
如您所见,二头肌正在设置网络安全组(NSG)。
但是,某些子网没有NSG,因此不会传入任何NSG。
我如何选择性地加入NSG?
我试过了

networkSecurityGroup: {
      id: ((networkSecurityGroupName != '') ? nsg.id : null)
    }


它是无效的,因为id不能为null。不知何故,我需要省略整个networkSecurityGroup属性。
我将NSG移至如下模块:

module subnetNSG './subnet_nsg.bicep' = if (networkSecurityGroupName != '') {
  name: '${deployment().name}-subnet.Deploy'
  params: {
    name: name
    vnetName: vnetName
    networkSecurityGroupName: networkSecurityGroupName
  }
}


它会选择性地呼叫模块。模块具有这个资源:

resource subnetNSG 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = {
  name: name
  parent: vnet
  properties: {
    networkSecurityGroup: {
      id: nsg.id
    }
  }
}


此操作失败,原因是:
资源的地址前缀字符串不能为null或为空。

np8igboo

np8igboo1#

你和以下人关系很好:

networkSecurityGroup: {
  id: ((networkSecurityGroupName != '') ? nsg.id : null)
}

字符串
您需要在networkSecurityGroup对象属性上设置条件:

networkSecurityGroup: !empty(networkSecurityGroupName) ? {
  id: nsg.id
} : null

相关问题