@@ -284,6 +284,17 @@ param parAzureFirewallLock lockType = {
284284 notes : 'This lock was created by the ALZ Bicep vWAN Connectivity Module.'
285285}
286286
287+ @sys .description (''' Resource Lock Configuration for Azure Firewall Policy.
288+
289+ - `kind` - The lock settings of the service which can be CanNotDelete, ReadOnly, or None.
290+ - `notes` - Notes about this lock.
291+
292+ ''' )
293+ param parAzureFirewallPolicyLock lockType = {
294+ kind : 'None'
295+ notes : 'This lock was created by the ALZ Bicep vWAN Connectivity Module.'
296+ }
297+
287298@sys .description ('The scale unit for this VPN Gateway.' )
288299param parVpnGatewayScaleUnit int = 1
289300
@@ -316,9 +327,18 @@ param parPrivateDnsZonesResourceGroup string = resourceGroup().name
316327@sys .description ('Array of DNS Zones to provision in Hub Virtual Network. Default: All known Azure Private DNS Zones, baked into underlying AVM module see: https://github.com/Azure/bicep-registry-modules/tree/main/avm/ptn/network/private-link-private-dns-zones#parameter-privatelinkprivatednszones' )
317328param parPrivateDnsZones array = []
318329
330+ @sys .description ('Switch to enable/disable fallback to internet for Private DNS Zones (option only available for Private DNS zones associated to Private Link resources).' )
331+ param parPrivateDnsZonesFallbackToInternet bool = false
332+
319333@sys .description ('Array of Resource IDs of VNets to link to Private DNS Zones.' )
320334param parVirtualNetworkResourceIdsToLinkTo array = []
321335
336+ @sys .description ('Array of additional Private Link Private DNS Zones to include in addition to those specified in `parPrivateDnsZones`.' )
337+ param additionalPrivateLinkPrivateDnsZonesToInclude array = []
338+
339+ @sys .description ('Array of Private Link Private DNS Zones to exclude from those specified in `parPrivateDnsZones`.' )
340+ param privateLinkPrivateDnsZonesToExclude array = []
341+
322342@sys .description ('''Resource Lock Configuration for Private DNS Zone(s).
323343
324344- `kind` - The lock settings of the service which can be CanNotDelete, ReadOnly, or None.
@@ -484,11 +504,11 @@ module modSidecarVirtualNetwork 'br/public:avm/res/network/virtual-network:0.7.0
484504
485505module modVnetPeeringVwan '../vnetPeeringVwan/vnetPeeringVwan.bicep' = [
486506 for (hub , i ) in parVirtualWanHubs : if (hub .parSidecarVirtualNetwork .sidecarVirtualNetworkEnabled ) {
487- name : 'deploy-vnet-peering-vwan-${hub .parSidecarVirtualNetwork .?name }-${hub .parHubLocation }'
507+ name : take ( 'deploy-vnet-peering-vwan-${hub .parSidecarVirtualNetwork .?name }-${hub .parHubLocation }' , 64 )
488508 scope : subscription ()
489509 params : {
490510 parRemoteVirtualNetworkResourceId : modSidecarVirtualNetwork [i ].outputs .resourceId
491- parVirtualWanHubResourceId : resVhub [0 ].id
511+ parVirtualWanHubResourceId : resVhub [i ].id
492512 }
493513 }
494514]
@@ -588,14 +608,14 @@ resource resFirewallPolicies 'Microsoft.Network/firewallPolicies@2024-05-01' = [
588608 }
589609]
590610
591- // Create Azure Firewall Policy resource lock if parAzFirewallEnabled is true and parGlobalResourceLock.kind != 'None' or if parAzureFirewallLock .kind != 'None'
611+ // Create Azure Firewall Policy resource lock if parAzFirewallEnabled is true and parGlobalResourceLock.kind != 'None' or if parAzureFirewallPolicyLock .kind != 'None'
592612resource resFirewallPoliciesLock 'Microsoft.Authorization/locks@2020-05-01' = [
593- for (hub , i ) in parVirtualWanHubs : if ((parVirtualHubEnabled && parVirtualWanHubs [i ].parAzFirewallEnabled ) && (parAzureFirewallLock .kind != 'None' || parGlobalResourceLock .kind != 'None' )) {
613+ for (hub , i ) in parVirtualWanHubs : if ((parVirtualHubEnabled && parVirtualWanHubs [i ].parAzFirewallEnabled ) && (parAzureFirewallPolicyLock .kind != 'None' || parGlobalResourceLock .kind != 'None' )) {
594614 scope : resFirewallPolicies [i ]
595- name : parAzureFirewallLock .?name ?? '${resFirewallPolicies [i ].name }-lock'
615+ name : parAzureFirewallPolicyLock .?name ?? '${resFirewallPolicies [i ].name }-lock'
596616 properties : {
597- level : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .kind : parAzureFirewallLock .kind
598- notes : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .?notes : parAzureFirewallLock .?notes
617+ level : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .kind : parAzureFirewallPolicyLock .kind
618+ notes : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .?notes : parAzureFirewallPolicyLock .?notes
599619 }
600620 }
601621]
@@ -630,13 +650,13 @@ resource resFirewallPoliciesSharedGlobal 'Microsoft.Network/firewallPolicies@202
630650 }
631651}
632652
633- // Create Azure Firewall Policy resource lock if parAzFirewallEnabled is true and parGlobalResourceLock.kind != 'None' or if parAzureFirewallLock .kind != 'None'
634- resource resFirewallPoliciesLockSharedGlobal 'Microsoft.Authorization/locks@2020-05-01' = if ((parVirtualHubEnabled && parVirtualWanHubs [0 ].parAzFirewallEnabled && parAzFirewallPolicyDeploymentStyle == 'SharedGlobal' ) && (parAzureFirewallLock .kind != 'None' || parGlobalResourceLock .kind != 'None' )) {
653+ // Create Azure Firewall Policy resource lock if parAzFirewallEnabled is true and parGlobalResourceLock.kind != 'None' or if parAzureFirewallPolicyLock .kind != 'None'
654+ resource resFirewallPoliciesLockSharedGlobal 'Microsoft.Authorization/locks@2020-05-01' = if ((parVirtualHubEnabled && parVirtualWanHubs [0 ].parAzFirewallEnabled && parAzFirewallPolicyDeploymentStyle == 'SharedGlobal' ) && (parAzureFirewallPolicyLock .kind != 'None' || parGlobalResourceLock .kind != 'None' )) {
635655 scope : resFirewallPoliciesSharedGlobal
636- name : parAzureFirewallLock .?name ?? '${resFirewallPoliciesSharedGlobal .name }-lock'
656+ name : parAzureFirewallPolicyLock .?name ?? '${resFirewallPoliciesSharedGlobal .name }-lock'
637657 properties : {
638- level : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .kind : parAzureFirewallLock .kind
639- notes : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .?notes : parAzureFirewallLock .?notes
658+ level : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .kind : parAzureFirewallPolicyLock .kind
659+ notes : (parGlobalResourceLock .kind != 'None' ) ? parGlobalResourceLock .?notes : parAzureFirewallPolicyLock .?notes
640660 }
641661}
642662
@@ -659,11 +679,13 @@ resource resAzureFirewall 'Microsoft.Network/azureFirewalls@2024-05-01' = [
659679 virtualHub : {
660680 id : parVirtualHubEnabled ? resVhub [i ].id : ''
661681 }
662- firewallPolicy : {
663- id : (parVirtualHubEnabled && hub .parAzFirewallEnabled && parAzFirewallPolicyDeploymentStyle == 'SharedGlobal' )
664- ? resFirewallPoliciesSharedGlobal .id
665- : resFirewallPolicies [i ].id
666- }
682+ firewallPolicy : (parVirtualHubEnabled && hub .parAzFirewallEnabled )
683+ ? {
684+ id : (parAzFirewallPolicyDeploymentStyle == 'SharedGlobal' )
685+ ? resFirewallPoliciesSharedGlobal .id
686+ : resFirewallPolicies [i ].id
687+ }
688+ : null
667689 }
668690 }
669691]
@@ -698,13 +720,21 @@ resource resDDoSProtectionPlanLock 'Microsoft.Authorization/locks@2020-05-01' =
698720}
699721
700722// Private DNS Zones cannot be linked to the Virtual WAN Hub today however, they can be linked to spokes as they are normal VNets as per https://docs.microsoft.com/azure/virtual-wan/howto-private-link
701- module modPrivateDnsZonesAVM 'br/public:avm/ptn/network/private-link-private-dns-zones:0.3 .0' = if (parPrivateDnsZonesEnabled ) {
723+ module modPrivateDnsZonesAVM 'br/public:avm/ptn/network/private-link-private-dns-zones:0.7 .0' = if (parPrivateDnsZonesEnabled ) {
702724 name : 'deploy-Private-DNS-Zones-AVM-Single'
703725 scope : resourceGroup (parPrivateDnsZonesResourceGroup )
704726 params : {
705727 location : parLocation
706728 privateLinkPrivateDnsZones : empty (parPrivateDnsZones ) ? null : parPrivateDnsZones
707- virtualNetworkResourceIdsToLinkTo : parVirtualNetworkResourceIdsToLinkTo
729+ additionalPrivateLinkPrivateDnsZonesToInclude : additionalPrivateLinkPrivateDnsZonesToInclude
730+ privateLinkPrivateDnsZonesToExclude : privateLinkPrivateDnsZonesToExclude
731+ virtualNetworkLinks : [
732+ for vnetId in parVirtualNetworkResourceIdsToLinkTo : {
733+ virtualNetworkResourceId : vnetId
734+ registrationEnabled : false
735+ resolutionPolicy : parPrivateDnsZonesFallbackToInternet ? 'NxDomainRedirect' : 'Default'
736+ }
737+ ]
708738 enableTelemetry : parTelemetryOptOut ? false : true
709739 tags : parTags
710740 lock : {
0 commit comments