Skip to content

Commit fc628e4

Browse files
committed
Address feedback from Copilot
1 parent 8aaf0c0 commit fc628e4

File tree

3 files changed

+26
-44
lines changed

3 files changed

+26
-44
lines changed

infra/core/host/container-registry.bicep

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@ param sku object = {
1616
}
1717
param zoneRedundancy string = 'Disabled'
1818

19-
@description('The log analytics workspace id used for logging & monitoring')
20-
param workspaceId string = ''
21-
2219
// 2022-02-01-preview needed for anonymousPullEnabled
2320
resource containerRegistry 'Microsoft.ContainerRegistry/registries@2022-02-01-preview' = {
2421
name: name
@@ -36,34 +33,6 @@ resource containerRegistry 'Microsoft.ContainerRegistry/registries@2022-02-01-pr
3633
}
3734
}
3835

39-
// TODO: Update diagnostics to be its own module
40-
// Blocking issue: https://github.com/Azure/bicep/issues/622
41-
// Unable to pass in a `resource` scope or unable to use string interpolation in resource types
42-
resource diagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = if (!empty(workspaceId)) {
43-
name: 'registry-diagnostics'
44-
scope: containerRegistry
45-
properties: {
46-
workspaceId: workspaceId
47-
logs: [
48-
{
49-
category: 'ContainerRegistryRepositoryEvents'
50-
enabled: true
51-
}
52-
{
53-
category: 'ContainerRegistryLoginEvents'
54-
enabled: true
55-
}
56-
]
57-
metrics: [
58-
{
59-
category: 'AllMetrics'
60-
enabled: true
61-
timeGrain: 'PT1M'
62-
}
63-
]
64-
}
65-
}
66-
6736
output loginServer string = containerRegistry.properties.loginServer
6837
output name string = containerRegistry.name
6938
output resourceId string = containerRegistry.id

infra/network-isolation.bicep

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ param useVpnGateway bool = false
1717
param vpnGatewayName string = '${vnetName}-vpn-gateway'
1818
param 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+
2027
module 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+
196208
module 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]
242254
output vnetName string = vnet.outputs.name
243255
output vnetId string = vnet.outputs.resourceId
244-
output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway.outputs.name : ''
256+
output virtualNetworkGatewayName string = useVpnGateway ? virtualNetworkGateway!.outputs.name : ''

infra/private-endpoints.bicep

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,8 @@ module monitorDnsZones './core/networking/private-dns-zones.bicep' = [for monito
8282
}]
8383
// Get blob DNS zone index for monitor private link
8484
var blobEndpointInfo = filter(flatten(privateEndpointInfo), info => info.groupId == 'blob')
85-
var dnsZoneBlobIndex = empty(blobEndpointInfo) ? 0 : blobEndpointInfo[0].dnsZoneIndex
85+
// Assert that blob endpoints exist (required for this application)
86+
var dnsZoneBlobIndex = blobEndpointInfo[0].dnsZoneIndex
8687

8788
// Azure Monitor Private Link Scope
8889
// https://learn.microsoft.com/azure/azure-monitor/logs/private-link-security

0 commit comments

Comments
 (0)