Skip to content

Commit 0a32f2e

Browse files
author
Evilazaro Alves
committed
Refactor Bicep modules to remove dateTime parameter and improve location handling
1 parent 7f2992a commit 0a32f2e

File tree

9 files changed

+27
-78
lines changed

9 files changed

+27
-78
lines changed

infra/main.bicep

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ param secretValue string
3131
@maxLength(10)
3232
param environmentName string
3333

34-
param dateTime string = utcNow('yyyyMMdd-HHmmss')
35-
3634
// Load configuration from YAML
3735
@description('Landing Zone resource organization')
3836
var landingZones = loadYamlContent('settings/resourceOrganization/azureResources.yaml')
@@ -96,7 +94,6 @@ output WORKLOAD_AZURE_RESOURCE_GROUP_NAME string = workloadRg.name
9694
// Module deployments with improved names and organization
9795
@description('Log Analytics Workspace for centralized monitoring')
9896
module monitoring '../src/management/logAnalytics.bicep' = {
99-
name: 'monitoring-logAnalytics-${environmentName}-${dateTime}'
10097
scope: resourceGroup(monitoringRgName)
10198
params: {
10299
name: 'logAnalytics'
@@ -114,7 +111,6 @@ output AZURE_LOG_ANALYTICS_WORKSPACE_NAME string = monitoring.outputs.AZURE_LOG_
114111

115112
@description('Security components including Key Vault')
116113
module security '../src/security/security.bicep' = {
117-
name: 'security-keyvault-${environmentName}-${dateTime}'
118114
scope: resourceGroup(securityRgName)
119115
params: {
120116
secretValue: secretValue
@@ -137,7 +133,6 @@ output AZURE_KEY_VAULT_ENDPOINT string = security.outputs.AZURE_KEY_VAULT_ENDPOI
137133

138134
@description('DevCenter workload deployment')
139135
module workload '../src/workload/workload.bicep' = {
140-
name: 'workload-${environmentName}-${dateTime}'
141136
scope: resourceGroup(workloadRgName)
142137
params: {
143138
logAnalyticsId: monitoring.outputs.AZURE_LOG_ANALYTICS_WORKSPACE_ID

src/connectivity/connectivity.bicep

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,9 @@ param logAnalyticsId string
1010
@description('Azure region for resource deployment')
1111
param location string
1212

13-
param dateTime string = utcNow('yyyy-MM-ddTHH:mm:ssZ')
14-
1513
var netConectCreate = (projectNetwork.create && projectNetwork.virtualNetworkType == 'Unmanaged') || (!projectNetwork.create && projectNetwork.virtualNetworkType == 'Unmanaged')
1614

1715
module Rg 'resourceGroup.bicep' = {
18-
name: 'projectNetworkRg-${uniqueString(projectNetwork.name, location)}'
1916
scope: subscription()
2017
params: {
2118
name: projectNetwork.resourceGroupName
@@ -28,7 +25,6 @@ module Rg 'resourceGroup.bicep' = {
2825
var rgName = (netConectCreate) ? projectNetwork.resourceGroupName : resourceGroup().name
2926

3027
module virtualNetwork 'vnet.bicep' = {
31-
name: 'virtualNetwork-${uniqueString(projectNetwork.name, resourceGroup().id, dateTime)}'
3228
scope: resourceGroup(rgName)
3329
params: {
3430
logAnalyticsId: logAnalyticsId
@@ -50,20 +46,16 @@ module virtualNetwork 'vnet.bicep' = {
5046

5147
@description('Network Connection resource for DevCenter')
5248
module networkConnection './networkConnection.bicep' = if (netConectCreate) {
53-
name: 'netconn-${uniqueString(projectNetwork.name,resourceGroup().id,dateTime)}'
5449
scope: resourceGroup()
5550
params: {
5651
devCenterName: devCenterName
5752
name: 'netconn-${virtualNetwork.outputs.AZURE_VIRTUAL_NETWORK.name}'
5853
subnetId: virtualNetwork.outputs.AZURE_VIRTUAL_NETWORK.subnets[0].id
5954
}
60-
dependsOn: [
61-
virtualNetwork
62-
]
6355
}
6456

6557
output networkConnectionName string = netConectCreate
66-
? networkConnection!.outputs.networkConnectionName
58+
? networkConnection.?outputs.?networkConnectionName ?? projectNetwork.name
6759
: projectNetwork.name
6860

6961
output networkType string = projectNetwork.virtualNetworkType

src/connectivity/vnet.bicep

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -83,17 +83,17 @@ resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-pr
8383

8484
output AZURE_VIRTUAL_NETWORK object = (settings.create && settings.virtualNetworkType == 'Unmanaged')
8585
? {
86-
name: virtualNetwork!.name
86+
name: virtualNetwork.?name ?? ''
8787
resourceGroupName: resourceGroup().name
8888
virtualNetworkType: settings.virtualNetworkType
89-
subnets: virtualNetwork!.properties.subnets
89+
subnets: virtualNetwork.?properties.?subnets ?? []
9090
}
9191
: (!settings.create && settings.virtualNetworkType == 'Unmanaged')
9292
? {
93-
name: existingVirtualNetwork!.name
93+
name: existingVirtualNetwork.?name ?? ''
9494
resourceGroupName: resourceGroup().name
9595
virtualNetworkType: settings.virtualNetworkType
96-
subnets: existingVirtualNetwork!.properties.subnets
96+
subnets: existingVirtualNetwork.?properties.?subnets ?? []
9797
}
9898
: {
9999
name: ''

src/security/security.bicep

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ param logAnalyticsId string
1111
@description('Azure Key Vault Configuration')
1212
var securitySettings = loadYamlContent('../../infra/settings/security/security.yaml')
1313

14-
param dateTime string = utcNow('yyyyMMdd-HHmmss')
15-
1614
@description('Azure Key Vault')
1715
module keyVault 'keyVault.bicep' = if (securitySettings.create) {
18-
name: 'keyVault-${securitySettings.keyVault.name}-${dateTime}'
1916
params: {
2017
tags: tags
2118
keyvaultSettings: securitySettings
@@ -30,20 +27,19 @@ resource existingKeyVault 'Microsoft.KeyVault/vaults@2025-05-01' existing = if (
3027

3128
@description('Key vault secret module')
3229
module secret 'secret.bicep' = {
33-
name: 'keyVaultSecret-${securitySettings.keyVault.secretName}-${dateTime}'
3430
params: {
3531
name: securitySettings.keyVault.secretName
36-
keyVaultName: (securitySettings.create ? keyVault!.outputs.AZURE_KEY_VAULT_NAME : existingKeyVault!.name)
32+
keyVaultName: (securitySettings.create ? keyVault.?outputs.?AZURE_KEY_VAULT_NAME : existingKeyVault.?name) ?? ''
3733
logAnalyticsId: logAnalyticsId
3834
secretValue: secretValue
3935
}
4036
}
4137

4238
@description('The name of the Key Vault')
43-
output AZURE_KEY_VAULT_NAME string = (securitySettings.create ? keyVault!.outputs.AZURE_KEY_VAULT_NAME : existingKeyVault!.name)
39+
output AZURE_KEY_VAULT_NAME string = (securitySettings.create ? keyVault.?outputs.?AZURE_KEY_VAULT_NAME : existingKeyVault.?name) ?? ''
4440

4541
@description('The identifier of the secret')
4642
output AZURE_KEY_VAULT_SECRET_IDENTIFIER string = secret.outputs.AZURE_KEY_VAULT_SECRET_IDENTIFIER
4743

4844
@description('The endpoint URI of the Key Vault')
49-
output AZURE_KEY_VAULT_ENDPOINT string = (securitySettings.create ? keyVault!.outputs.AZURE_KEY_VAULT_ENDPOINT : existingKeyVault!.properties.vaultUri)
45+
output AZURE_KEY_VAULT_ENDPOINT string = (securitySettings.create ? keyVault.?outputs.?AZURE_KEY_VAULT_ENDPOINT : existingKeyVault.?properties.?vaultUri) ?? ''

src/workload/core/devCenter.bicep

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@ param secretIdentifier string
2222

2323
param securityResourceGroupName string
2424

25-
param dateTime string = utcNow('yyyyMMdd-HHmmss')
25+
@description('Azure region for resource deployment')
26+
param location string = resourceGroup().location
2627

2728
// Type definitions with proper naming conventions
2829
@description('DevCenter configuration type')
@@ -76,7 +77,7 @@ type OrgRoleType = {
7677
@description('Dev Center Resource')
7778
resource devcenter 'Microsoft.DevCenter/devcenters@2025-10-01-preview' = {
7879
name: devCenterName
79-
location: resourceGroup().location
80+
location: location
8081
identity: {
8182
type: config.identity.type
8283
}
@@ -124,7 +125,6 @@ resource diagnosticSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-pr
124125
@description('Dev Center Identity Role Assignments')
125126
module devCenterIdentityRoleAssignment '../../identity/devCenterRoleAssignment.bicep' = [
126127
for (role, i) in config.identity.roleAssignments.devCenter: {
127-
name: 'RBACDevCenterSub-${i}-${devCenterName}-${dateTime}'
128128
scope: subscription()
129129
params: {
130130
id: role.id
@@ -137,7 +137,6 @@ module devCenterIdentityRoleAssignment '../../identity/devCenterRoleAssignment.b
137137
@description('Dev Center Identity Role Assignments')
138138
module devCenterIdentityRoleAssignmentRG '../../identity/devCenterRoleAssignmentRG.bicep' = [
139139
for (role, i) in config.identity.roleAssignments.devCenter: {
140-
name: 'RBACDevCenterRG-${i}-${devCenterName}-${dateTime}'
141140
scope: resourceGroup(securityResourceGroupName)
142141
params: {
143142
id: role.id
@@ -153,49 +152,35 @@ module devCenterIdentityRoleAssignmentRG '../../identity/devCenterRoleAssignment
153152
@description('Dev Center Identity User Groups role assignments')
154153
module devCenterIdentityUserGroupsRoleAssignment '../../identity/orgRoleAssignment.bicep' = [
155154
for (role, i) in config.identity.roleAssignments.orgRoleTypes: {
156-
name: 'RBACUserGroup-${i}-${devCenterName}-${dateTime}'
157155
scope: resourceGroup()
158156
params: {
159157
principalId: role.azureADGroupId
160158
roles: role.azureRBACRoles
161159
}
162-
dependsOn: [
163-
devCenterIdentityRoleAssignment
164-
]
165160
}
166161
]
167162

168163
// Catalog configuration
169164
@description('Dev Center Catalogs')
170165
module catalog 'catalog.bicep' = [
171166
for (catalog, i) in catalogs: {
172-
name: 'catalog-${i}-${devCenterName}-${dateTime}'
173167
scope: resourceGroup()
174168
params: {
175169
devCenterName: devCenterName
176170
catalogConfig: catalog
177171
secretIdentifier: secretIdentifier
178172
}
179-
dependsOn: [
180-
devcenter
181-
devCenterIdentityRoleAssignment
182-
devCenterIdentityRoleAssignmentRG
183-
]
184173
}
185174
]
186175

187176
// Environment types configuration
188177
@description('Dev Center Environments')
189178
module environment 'environmentType.bicep' = [
190179
for (environment, i) in environmentTypes: {
191-
name: 'environmentType-${i}-${devCenterName}-${dateTime}'
192180
scope: resourceGroup()
193181
params: {
194182
devCenterName: devCenterName
195183
environmentConfig: environment
196184
}
197-
dependsOn: [
198-
devcenter
199-
]
200185
}
201186
]

src/workload/project/project.bicep

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ param identity Identity
3636
@description('Tags to be applied to all resources')
3737
param tags object = {}
3838

39-
param dateTime string = utcNow('yyyyMMdd-HHmmss')
39+
@description('Azure region for resource deployment')
40+
param location string = resourceGroup().location
4041

4142
@description('Identity configuration for the project')
4243
type Identity = {
@@ -76,7 +77,7 @@ resource devCenter 'Microsoft.DevCenter/devcenters@2025-10-01-preview' existing
7677
@description('DevCenter Project resource')
7778
resource project 'Microsoft.DevCenter/projects@2025-10-01-preview' = {
7879
name: name
79-
location: resourceGroup().location
80+
location: location
8081
identity: {
8182
type: identity.type
8283
}
@@ -100,7 +101,6 @@ resource project 'Microsoft.DevCenter/projects@2025-10-01-preview' = {
100101
@description('Configure project identity role assignments')
101102
module projectIdentity '../../identity/projectIdentityRoleAssignment.bicep' = [
102103
for (role, i) in identity.roleAssignments: {
103-
name: 'prj-rbac${i}-${uniqueString(project.id, project.name)}-${dateTime}'
104104
scope: resourceGroup()
105105
params: {
106106
projectName: project.name
@@ -114,7 +114,6 @@ module projectIdentity '../../identity/projectIdentityRoleAssignment.bicep' = [
114114
@description('Configure project identity role assignments')
115115
module projectIdentityRG '../../identity/projectIdentityRoleAssignmentRG.bicep' = [
116116
for (role, i) in identity.roleAssignments: {
117-
name: 'prj-rbac-RG-${i}-${uniqueString(project.id, project.name)}-${dateTime}'
118117
scope: resourceGroup(securityResourceGroupName)
119118
params: {
120119
projectName: project.name
@@ -128,7 +127,6 @@ module projectIdentityRG '../../identity/projectIdentityRoleAssignmentRG.bicep'
128127
@description('Add the AD Group to the DevCenter project')
129128
module projectADGroup '../../identity/projectIdentityRoleAssignment.bicep' = [
130129
for (role, i) in identity.roleAssignments: {
131-
name: 'prj-adgroup-${i}-${uniqueString(project.id, project.name)}-${dateTime}'
132130
scope: resourceGroup()
133131
params: {
134132
projectName: project.name
@@ -142,61 +140,41 @@ module projectADGroup '../../identity/projectIdentityRoleAssignment.bicep' = [
142140
@description('Configure project catalogs')
143141
module projectCatalogs 'projectCatalog.bicep' = [
144142
for (catalog, i) in catalogs: {
145-
name: 'catalog-${i}-${uniqueString(project.id, catalog.name)}-${dateTime}'
146143
scope: resourceGroup()
147144
params: {
148145
projectName: project.name
149146
catalogConfig: catalog
150147
secretIdentifier: secretIdentifier
151148
}
152-
dependsOn: [
153-
projectIdentity
154-
projectIdentityRG
155-
projectADGroup
156-
]
157149
}
158150
]
159151

160152
@description('Configure project environment types')
161153
module environmentTypes 'projectEnvironmentType.bicep' = [
162154
for (envType, i) in projectEnvironmentTypes: {
163-
name: 'env-type-${i}-${uniqueString(project.id, envType.name)}-${dateTime}'
164155
scope: resourceGroup()
165156
params: {
166157
projectName: project.name
167158
environmentConfig: envType
159+
location: location
168160
}
169-
dependsOn: [
170-
projectIdentity
171-
projectIdentityRG
172-
projectADGroup
173-
projectCatalogs
174-
]
175161
}
176162
]
177163

178164
@description('Connectivity configuration for the project')
179165
module connectivity '../../connectivity/connectivity.bicep' = {
180-
name: 'connectivity-${uniqueString(project.id)}-${dateTime}'
181166
scope: resourceGroup()
182167
params: {
183168
devCenterName: devCenterName
184169
projectNetwork: projectNetwork
185170
logAnalyticsId: logAnalyticsId
186-
location: resourceGroup().location
171+
location: location
187172
}
188-
dependsOn: [
189-
projectIdentity
190-
projectIdentityRG
191-
projectADGroup
192-
projectCatalogs
193-
]
194173
}
195174

196175
@description('Configure DevBox pools for the project')
197176
module pools 'projectPool.bicep' = [
198177
for (pool, i) in projectPools: {
199-
name: 'pool-${i}-${uniqueString(project.id, pool.name)}-${dateTime}'
200178
scope: resourceGroup()
201179
params: {
202180
name: pool.name
@@ -206,6 +184,7 @@ module pools 'projectPool.bicep' = [
206184
vmSku: pool.vmSku
207185
networkConnectionName: connectivity.outputs.networkConnectionName
208186
networkType: connectivity.outputs.networkType
187+
location: location
209188
}
210189
}
211190
]

src/workload/project/projectEnvironmentType.bicep

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
@description('Project Name')
22
param projectName string
33

4+
@description('Azure region for resource deployment')
5+
param location string = resourceGroup().location
6+
47
@description('Environment Configuration')
58
param environmentConfig ProjectEnvironmentType
69

@@ -24,6 +27,7 @@ resource project 'Microsoft.DevCenter/projects@2025-10-01-preview' existing = {
2427
@description('Dev Center Environments')
2528
resource environmentType 'Microsoft.DevCenter/projects/environmentTypes@2025-10-01-preview' = {
2629
name: environmentConfig.name
30+
location: location
2731
parent: project
2832
identity: {
2933
type: 'SystemAssigned'

src/workload/project/projectPool.bicep

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
@description('Pool Name')
22
param name string
33

4-
@description('Location for the deployment')
4+
@description('Azure region for resource deployment')
55
param location string = resourceGroup().location
66

77
@description('The name of the catalog to use for the pool')
@@ -74,7 +74,7 @@ resource pool 'Microsoft.DevCenter/projects/pools@2025-10-01-preview' = [
7474
singleSignOnStatus: 'Enabled'
7575
displayName: name
7676
virtualNetworkType: networkType
77-
managedVirtualNetworkRegions: (networkType == 'Managed') ? [resourceGroup().location] : []
77+
managedVirtualNetworkRegions: (networkType == 'Managed') ? [location] : []
7878
}
7979
}
8080
]

0 commit comments

Comments
 (0)