@@ -17,6 +17,13 @@ param useVpnGateway bool = false
1717param vpnGatewayName string = '${vnetName }-vpn-gateway'
1818param dnsResolverName string = '${vnetName }-dns-resolver'
1919
20+ // Subnet name constants
21+ var backendSubnetName = 'backend-subnet'
22+ var gatewaySubnetName = 'GatewaySubnet' // Required name for Gateway subnet
23+ var dnsResolverSubnetName = 'dns-resolver-subnet'
24+ var appServiceSubnetName = 'app-service-subnet'
25+ var containerAppsSubnetName = 'container-apps-subnet'
26+
2027module containerAppsNSG 'br/public:avm/res/network/network-security-group:0.5.1' = if (deploymentTarget == 'containerapps' ) {
2128 name : 'container-apps-nsg'
2229 params : {
@@ -41,7 +48,7 @@ module containerAppsNSG 'br/public:avm/res/network/network-security-group:0.5.1'
4148 }
4249}
4350
44- module privateEndpointsNSG 'br/public:avm/res/network/network-security-group:0.5.1' = if ( deploymentTarget == 'containerapps' ) {
51+ module privateEndpointsNSG 'br/public:avm/res/network/network-security-group:0.5.1' = {
4552 name : 'private-endpoints-nsg'
4653 params : {
4754 name : '${vnetName }-private-endpoints-nsg'
@@ -155,26 +162,26 @@ module vnet 'br/public:avm/res/network/virtual-network:0.6.1' = {
155162 subnets : union (
156163 [
157164 {
158- name : 'backend-subnet'
165+ name : backendSubnetName
159166 addressPrefix : '10.0.8.0/24'
160167 privateEndpointNetworkPolicies : 'Enabled'
161168 privateLinkServiceNetworkPolicies : 'Enabled'
162169 networkSecurityGroupResourceId : privateEndpointsNSG .outputs .resourceId
163170 }
164171 {
165- name : 'GatewaySubnet' // Required name for Gateway subnet
172+ name : gatewaySubnetName // Required name for Gateway subnet
166173 addressPrefix : '10.0.255.0/27' // Using a /27 subnet size which is minimal required size for gateway subnet
167174 }
168175 {
169- name : 'dns-resolver-subnet' // Dedicated subnet for Azure Private DNS Resolver
176+ name : dnsResolverSubnetName // Dedicated subnet for Azure Private DNS Resolver
170177 addressPrefix : '10.0.11.0/28'
171178 delegation : 'Microsoft.Network/dnsResolvers'
172179 }
173180 ],
174181 deploymentTarget == 'appservice'
175182 ? [
176183 {
177- name : 'app-service-subnet'
184+ name : appServiceSubnetName
178185 addressPrefix : '10.0.9.0/24'
179186 privateEndpointNetworkPolicies : 'Enabled'
180187 privateLinkServiceNetworkPolicies : 'Enabled'
@@ -183,16 +190,21 @@ module vnet 'br/public:avm/res/network/virtual-network:0.6.1' = {
183190 ]
184191 : [
185192 {
186- name : 'container-apps-subnet'
193+ name : containerAppsSubnetName
187194 addressPrefix : '10.0.0.0/21'
188- networkSecurityGroupResourceId : containerAppsNSG .outputs .resourceId
189195 delegation : 'Microsoft.App/environments'
196+ networkSecurityGroupResourceId : containerAppsNSG !.outputs .resourceId
190197 }
191198 ]
192199 )
193200 }
194201}
195202
203+ // Helper variables to find subnet resource IDs by name instead of hardcoded indices
204+ var dnsResolverSubnetIndex = indexOf (vnet .outputs .subnetNames , dnsResolverSubnetName )
205+ var backendSubnetIndex = indexOf (vnet .outputs .subnetNames , backendSubnetName )
206+ var appSubnetIndex = deploymentTarget == 'appservice' ? indexOf (vnet .outputs .subnetNames , appServiceSubnetName ) : indexOf (vnet .outputs .subnetNames , containerAppsSubnetName )
207+
196208module virtualNetworkGateway 'br/public:avm/res/network/virtual-network-gateway:0.8.0' = if (useVpnGateway ) {
197209 name : 'virtual-network-gateway'
198210 params : {
@@ -230,15 +242,15 @@ module dnsResolver 'br/public:avm/res/network/dns-resolver:0.5.4' = if (useVpnGa
230242 inboundEndpoints : [
231243 {
232244 name : 'inboundEndpoint'
233- subnetResourceId : useVpnGateway ? vnet .outputs .subnetResourceIds [2 ] : ''
245+ subnetResourceId : useVpnGateway ? vnet .outputs .subnetResourceIds [dnsResolverSubnetIndex ] : ''
234246 }
235247 ]
236248 }
237249}
238250
239- output backendSubnetId string = vnet .outputs .subnetResourceIds [0 ]
240- output privateDnsResolverSubnetId string = useVpnGateway ? vnet .outputs .subnetResourceIds [2 ] : ''
241- output appSubnetId string = vnet .outputs .subnetResourceIds [3 ]
251+ output backendSubnetId string = vnet .outputs .subnetResourceIds [backendSubnetIndex ]
252+ output privateDnsResolverSubnetId string = useVpnGateway ? vnet .outputs .subnetResourceIds [dnsResolverSubnetIndex ] : ''
253+ output appSubnetId string = vnet .outputs .subnetResourceIds [appSubnetIndex ]
242254output vnetName string = vnet .outputs .name
243255output vnetId string = vnet .outputs .resourceId
244- output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway .outputs .name : ''
256+ output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway ! .outputs .name : ''
0 commit comments