@@ -17,6 +17,13 @@ param useVpnGateway bool = false
17
17
param vpnGatewayName string = '${vnetName }-vpn-gateway'
18
18
param dnsResolverName string = '${vnetName }-dns-resolver'
19
19
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
+
20
27
module containerAppsNSG 'br/public:avm/res/network/network-security-group:0.5.1' = if (deploymentTarget == 'containerapps' ) {
21
28
name : 'container-apps-nsg'
22
29
params : {
@@ -41,7 +48,7 @@ module containerAppsNSG 'br/public:avm/res/network/network-security-group:0.5.1'
41
48
}
42
49
}
43
50
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' = {
45
52
name : 'private-endpoints-nsg'
46
53
params : {
47
54
name : '${vnetName }-private-endpoints-nsg'
@@ -155,26 +162,26 @@ module vnet 'br/public:avm/res/network/virtual-network:0.6.1' = {
155
162
subnets : union (
156
163
[
157
164
{
158
- name : 'backend-subnet'
165
+ name : backendSubnetName
159
166
addressPrefix : '10.0.8.0/24'
160
167
privateEndpointNetworkPolicies : 'Enabled'
161
168
privateLinkServiceNetworkPolicies : 'Enabled'
162
169
networkSecurityGroupResourceId : privateEndpointsNSG .outputs .resourceId
163
170
}
164
171
{
165
- name : 'GatewaySubnet' // Required name for Gateway subnet
172
+ name : gatewaySubnetName // Required name for Gateway subnet
166
173
addressPrefix : '10.0.255.0/27' // Using a /27 subnet size which is minimal required size for gateway subnet
167
174
}
168
175
{
169
- name : 'dns-resolver-subnet' // Dedicated subnet for Azure Private DNS Resolver
176
+ name : dnsResolverSubnetName // Dedicated subnet for Azure Private DNS Resolver
170
177
addressPrefix : '10.0.11.0/28'
171
178
delegation : 'Microsoft.Network/dnsResolvers'
172
179
}
173
180
],
174
181
deploymentTarget == 'appservice'
175
182
? [
176
183
{
177
- name : 'app-service-subnet'
184
+ name : appServiceSubnetName
178
185
addressPrefix : '10.0.9.0/24'
179
186
privateEndpointNetworkPolicies : 'Enabled'
180
187
privateLinkServiceNetworkPolicies : 'Enabled'
@@ -183,16 +190,21 @@ module vnet 'br/public:avm/res/network/virtual-network:0.6.1' = {
183
190
]
184
191
: [
185
192
{
186
- name : 'container-apps-subnet'
193
+ name : containerAppsSubnetName
187
194
addressPrefix : '10.0.0.0/21'
188
- networkSecurityGroupResourceId : containerAppsNSG .outputs .resourceId
189
195
delegation : 'Microsoft.App/environments'
196
+ networkSecurityGroupResourceId : containerAppsNSG !.outputs .resourceId
190
197
}
191
198
]
192
199
)
193
200
}
194
201
}
195
202
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
+
196
208
module virtualNetworkGateway 'br/public:avm/res/network/virtual-network-gateway:0.8.0' = if (useVpnGateway ) {
197
209
name : 'virtual-network-gateway'
198
210
params : {
@@ -230,15 +242,15 @@ module dnsResolver 'br/public:avm/res/network/dns-resolver:0.5.4' = if (useVpnGa
230
242
inboundEndpoints : [
231
243
{
232
244
name : 'inboundEndpoint'
233
- subnetResourceId : useVpnGateway ? vnet .outputs .subnetResourceIds [2 ] : ''
245
+ subnetResourceId : useVpnGateway ? vnet .outputs .subnetResourceIds [dnsResolverSubnetIndex ] : ''
234
246
}
235
247
]
236
248
}
237
249
}
238
250
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 ]
242
254
output vnetName string = vnet .outputs .name
243
255
output vnetId string = vnet .outputs .resourceId
244
- output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway .outputs .name : ''
256
+ output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway ! .outputs .name : ''
0 commit comments