Skip to content

Commit 5d79d5d

Browse files
Harmanpreet-MicrosoftHarmanpreet Kaur
andauthored
refactor: centralize Azure resource naming with abbreviations.json and update Bicep templates (#1795)
Co-authored-by: Harmanpreet Kaur <[email protected]>
1 parent cea820d commit 5d79d5d

File tree

4 files changed

+687
-324
lines changed

4 files changed

+687
-324
lines changed

infra/abbreviations.json

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
{
2+
"ai": {
3+
"aiSearch": "srch-",
4+
"aiServices": "aisa-",
5+
"aiVideoIndexer": "avi-",
6+
"machineLearningWorkspace": "mlw-",
7+
"openAIService": "oai-",
8+
"botService": "bot-",
9+
"computerVision": "cv-",
10+
"contentModerator": "cm-",
11+
"contentSafety": "cs-",
12+
"customVisionPrediction": "cstv-",
13+
"customVisionTraining": "cstvt-",
14+
"documentIntelligence": "di-",
15+
"faceApi": "face-",
16+
"healthInsights": "hi-",
17+
"immersiveReader": "ir-",
18+
"languageService": "lang-",
19+
"speechService": "spch-",
20+
"translator": "trsl-",
21+
"aiHub": "aih-",
22+
"aiHubProject": "aihp-"
23+
},
24+
"analytics": {
25+
"analysisServicesServer": "as",
26+
"databricksWorkspace": "dbw-",
27+
"dataExplorerCluster": "dec",
28+
"dataExplorerClusterDatabase": "dedb",
29+
"dataFactory": "adf-",
30+
"digitalTwin": "dt-",
31+
"streamAnalytics": "asa-",
32+
"synapseAnalyticsPrivateLinkHub": "synplh-",
33+
"synapseAnalyticsSQLDedicatedPool": "syndp",
34+
"synapseAnalyticsSparkPool": "synsp",
35+
"synapseAnalyticsWorkspaces": "synw",
36+
"dataLakeStoreAccount": "dls",
37+
"dataLakeAnalyticsAccount": "dla",
38+
"eventHubsNamespace": "evhns-",
39+
"eventHub": "evh-",
40+
"eventGridDomain": "evgd-",
41+
"eventGridSubscriptions": "evgs-",
42+
"eventGridTopic": "evgt-",
43+
"eventGridSystemTopic": "egst-",
44+
"hdInsightHadoopCluster": "hadoop-",
45+
"hdInsightHBaseCluster": "hbase-",
46+
"hdInsightKafkaCluster": "kafka-",
47+
"hdInsightSparkCluster": "spark-",
48+
"hdInsightStormCluster": "storm-",
49+
"hdInsightMLServicesCluster": "mls-",
50+
"iotHub": "iot-",
51+
"provisioningServices": "provs-",
52+
"provisioningServicesCertificate": "pcert-",
53+
"powerBIEmbedded": "pbi-",
54+
"timeSeriesInsightsEnvironment": "tsi-"
55+
},
56+
"compute": {
57+
"appServiceEnvironment": "ase-",
58+
"appServicePlan": "asp-",
59+
"loadTesting": "lt-",
60+
"availabilitySet": "avail-",
61+
"arcEnabledServer": "arcs-",
62+
"arcEnabledKubernetesCluster": "arck",
63+
"batchAccounts": "ba-",
64+
"cloudService": "cld-",
65+
"communicationServices": "acs-",
66+
"diskEncryptionSet": "des",
67+
"functionApp": "func-",
68+
"gallery": "gal",
69+
"hostingEnvironment": "host-",
70+
"imageTemplate": "it-",
71+
"managedDiskOS": "osdisk",
72+
"managedDiskData": "disk",
73+
"notificationHubs": "ntf-",
74+
"notificationHubsNamespace": "ntfns-",
75+
"proximityPlacementGroup": "ppg-",
76+
"restorePointCollection": "rpc-",
77+
"snapshot": "snap-",
78+
"staticWebApp": "stapp-",
79+
"virtualMachine": "vm",
80+
"virtualMachineScaleSet": "vmss-",
81+
"virtualMachineMaintenanceConfiguration": "mc-",
82+
"virtualMachineStorageAccount": "stvm",
83+
"webApp": "app-"
84+
},
85+
"containers": {
86+
"aksCluster": "aks-",
87+
"aksSystemNodePool": "npsystem-",
88+
"aksUserNodePool": "np-",
89+
"containerApp": "ca-",
90+
"containerAppsEnvironment": "cae-",
91+
"containerRegistry": "cr",
92+
"containerInstance": "ci",
93+
"serviceFabricCluster": "sf-",
94+
"serviceFabricManagedCluster": "sfmc-"
95+
},
96+
"databases": {
97+
"cosmosDBDatabase": "cosmos-",
98+
"cosmosDBApacheCassandra": "coscas-",
99+
"cosmosDBMongoDB": "cosmon-",
100+
"cosmosDBNoSQL": "cosno-",
101+
"cosmosDBTable": "costab-",
102+
"cosmosDBGremlin": "cosgrm-",
103+
"cosmosDBPostgreSQL": "cospos-",
104+
"cacheForRedis": "redis-",
105+
"sqlDatabaseServer": "sql-",
106+
"sqlDatabase": "sqldb-",
107+
"sqlElasticJobAgent": "sqlja-",
108+
"sqlElasticPool": "sqlep-",
109+
"mariaDBServer": "maria-",
110+
"mariaDBDatabase": "mariadb-",
111+
"mySQLDatabase": "mysql-",
112+
"postgreSQLDatabase": "psql-",
113+
"sqlServerStretchDatabase": "sqlstrdb-",
114+
"sqlManagedInstance": "sqlmi-"
115+
},
116+
"developerTools": {
117+
"appConfigurationStore": "appcs-",
118+
"mapsAccount": "map-",
119+
"signalR": "sigr",
120+
"webPubSub": "wps-"
121+
},
122+
"devOps": {
123+
"managedGrafana": "amg-"
124+
},
125+
"integration": {
126+
"apiManagementService": "apim-",
127+
"integrationAccount": "ia-",
128+
"logicApp": "logic-",
129+
"serviceBusNamespace": "sbns-",
130+
"serviceBusQueue": "sbq-",
131+
"serviceBusTopic": "sbt-",
132+
"serviceBusTopicSubscription": "sbts-"
133+
},
134+
"managementGovernance": {
135+
"automationAccount": "aa-",
136+
"applicationInsights": "appi-",
137+
"monitorActionGroup": "ag-",
138+
"monitorDataCollectionRules": "dcr-",
139+
"monitorAlertProcessingRule": "apr-",
140+
"blueprint": "bp-",
141+
"blueprintAssignment": "bpa-",
142+
"dataCollectionEndpoint": "dce-",
143+
"logAnalyticsWorkspace": "log-",
144+
"logAnalyticsQueryPacks": "pack-",
145+
"managementGroup": "mg-",
146+
"purviewInstance": "pview-",
147+
"resourceGroup": "rg-",
148+
"templateSpecsName": "ts-"
149+
},
150+
"migration": {
151+
"migrateProject": "migr-",
152+
"databaseMigrationService": "dms-",
153+
"recoveryServicesVault": "rsv-"
154+
},
155+
"networking": {
156+
"applicationGateway": "agw-",
157+
"applicationSecurityGroup": "asg-",
158+
"cdnProfile": "cdnp-",
159+
"cdnEndpoint": "cdne-",
160+
"connections": "con-",
161+
"dnsForwardingRuleset": "dnsfrs-",
162+
"dnsPrivateResolver": "dnspr-",
163+
"dnsPrivateResolverInboundEndpoint": "in-",
164+
"dnsPrivateResolverOutboundEndpoint": "out-",
165+
"firewall": "afw-",
166+
"firewallPolicy": "afwp-",
167+
"expressRouteCircuit": "erc-",
168+
"expressRouteGateway": "ergw-",
169+
"frontDoorProfile": "afd-",
170+
"frontDoorEndpoint": "fde-",
171+
"frontDoorFirewallPolicy": "fdfp-",
172+
"ipGroups": "ipg-",
173+
"loadBalancerInternal": "lbi-",
174+
"loadBalancerExternal": "lbe-",
175+
"loadBalancerRule": "rule-",
176+
"localNetworkGateway": "lgw-",
177+
"natGateway": "ng-",
178+
"networkInterface": "nic-",
179+
"networkSecurityGroup": "nsg-",
180+
"networkSecurityGroupSecurityRules": "nsgsr-",
181+
"networkWatcher": "nw-",
182+
"privateLink": "pl-",
183+
"privateEndpoint": "pep-",
184+
"publicIPAddress": "pip-",
185+
"publicIPAddressPrefix": "ippre-",
186+
"routeFilter": "rf-",
187+
"routeServer": "rtserv-",
188+
"routeTable": "rt-",
189+
"serviceEndpointPolicy": "se-",
190+
"trafficManagerProfile": "traf-",
191+
"userDefinedRoute": "udr-",
192+
"virtualNetwork": "vnet-",
193+
"virtualNetworkGateway": "vgw-",
194+
"virtualNetworkManager": "vnm-",
195+
"virtualNetworkPeering": "peer-",
196+
"virtualNetworkSubnet": "snet-",
197+
"virtualWAN": "vwan-",
198+
"virtualWANHub": "vhub-"
199+
},
200+
"security": {
201+
"bastion": "bas-",
202+
"keyVault": "kv-",
203+
"keyVaultManagedHSM": "kvmhsm-",
204+
"managedIdentity": "id-",
205+
"sshKey": "sshkey-",
206+
"vpnGateway": "vpng-",
207+
"vpnConnection": "vcn-",
208+
"vpnSite": "vst-",
209+
"webApplicationFirewallPolicy": "waf",
210+
"webApplicationFirewallPolicyRuleGroup": "wafrg"
211+
},
212+
"storage": {
213+
"storSimple": "ssimp",
214+
"backupVault": "bvault-",
215+
"backupVaultPolicy": "bkpol-",
216+
"fileShare": "share-",
217+
"storageAccount": "st",
218+
"storageSyncService": "sss-"
219+
},
220+
"virtualDesktop": {
221+
"labServicesPlan": "lp-",
222+
"virtualDesktopHostPool": "vdpool-",
223+
"virtualDesktopApplicationGroup": "vdag-",
224+
"virtualDesktopWorkspace": "vdws-",
225+
"virtualDesktopScalingPlan": "vdscaling-"
226+
}
227+
}

infra/core/security/managed-identity.bicep

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ param solutionName string
1010
param solutionLocation string
1111

1212
@description('Name')
13-
param miName string = '${ solutionName }-managed-identity'
13+
param miName string
1414

1515
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
1616
name: miName

infra/main.bicep

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ targetScope = 'subscription'
44
@maxLength(20)
55
@description('Name of the the environment which is used to generate a short unique hash used in all resources.')
66
param environmentName string
7+
var abbrs = loadJsonContent('./abbreviations.json')
78

89
param resourceToken string = toLower(uniqueString(subscription().id, environmentName, location))
910

1011
@description('Location for all resources.')
1112
param location string
1213

1314
@description('Name of App Service plan')
14-
param hostingPlanName string = 'hosting-plan-${resourceToken}'
15+
var hostingPlanName = '${abbrs.compute.appServicePlan}${resourceToken}'
1516

1617
@description('The pricing tier for the App Service plan')
1718
@allowed([
@@ -50,19 +51,19 @@ param skuTier string = 'Basic'
5051
param databaseType string = 'PostgreSQL'
5152

5253
@description('Azure Cosmos DB Account Name')
53-
param azureCosmosDBAccountName string = 'cosmos-${resourceToken}'
54+
var azureCosmosDBAccountName = '${abbrs.databases.cosmosDBDatabase}${resourceToken}'
5455

5556
@description('Azure Postgres DB Account Name')
56-
param azurePostgresDBAccountName string = 'postgres-${resourceToken}'
57+
var azurePostgresDBAccountName = '${abbrs.databases.postgreSQLDatabase}${resourceToken}'
5758

5859
@description('Name of Web App')
59-
param websiteName string = 'web-${resourceToken}'
60+
var websiteName = '${abbrs.compute.webApp}${resourceToken}'
6061

6162
@description('Name of Admin Web App')
62-
param adminWebsiteName string = '${websiteName}-admin'
63+
var adminWebsiteName = '${websiteName}-admin'
6364

6465
@description('Name of Application Insights')
65-
param applicationInsightsName string = 'appinsights-${resourceToken}'
66+
var applicationInsightsName = '${abbrs.managementGovernance.applicationInsights}${resourceToken}'
6667

6768
@description('Name of the Workbook')
6869
param workbookDisplayName string = 'workbook-${resourceToken}'
@@ -119,7 +120,7 @@ param azureSearchUrlColumn string = 'url'
119120
param azureSearchUseIntegratedVectorization bool = false
120121

121122
@description('Name of Azure OpenAI Resource')
122-
param azureOpenAIResourceName string = 'openai-${resourceToken}'
123+
var azureOpenAIResourceName = '${abbrs.ai.openAIService}${resourceToken}'
123124

124125
@description('Name of Azure OpenAI Resource SKU')
125126
param azureOpenAISkuName string = 'S0'
@@ -204,7 +205,7 @@ param azureOpenAIEmbeddingModelVersion string = '2'
204205
param azureOpenAIEmbeddingModelCapacity int = 30
205206

206207
@description('Name of Computer Vision Resource (if useAdvancedImageProcessing=true)')
207-
param computerVisionName string = 'computer-vision-${resourceToken}'
208+
var computerVisionName = '${abbrs.ai.computerVision}${resourceToken}'
208209

209210
@description('Name of Computer Vision Resource SKU (if useAdvancedImageProcessing=true)')
210211
@allowed([
@@ -234,7 +235,7 @@ param computerVisionVectorizeImageApiVersion string = '2024-02-01'
234235
param computerVisionVectorizeImageModelVersion string = '2023-04-15'
235236

236237
@description('Azure AI Search Resource')
237-
param azureAISearchName string = 'search-${resourceToken}'
238+
var azureAISearchName = '${abbrs.ai.aiSearch}${resourceToken}'
238239

239240
@description('The SKU of the search service you want to create. E.g. free or standard')
240241
@allowed([
@@ -259,22 +260,22 @@ param azureSearchDatasource string = 'datasource-${resourceToken}'
259260
param azureSearchConversationLogIndex string = 'conversations'
260261

261262
@description('Name of Storage Account')
262-
param storageAccountName string = 'str${resourceToken}'
263+
var storageAccountName = '${abbrs.storage.storageAccount}${resourceToken}'
263264

264265
@description('Name of Function App for Batch document processing')
265-
param functionName string = 'backend-${resourceToken}'
266+
var functionName = '${abbrs.compute.functionApp}${resourceToken}'
266267

267268
@description('Azure Form Recognizer Name')
268-
param formRecognizerName string = 'formrecog-${resourceToken}'
269+
var formRecognizerName = '${abbrs.ai.documentIntelligence}${resourceToken}'
269270

270271
@description('Azure Content Safety Name')
271-
param contentSafetyName string = 'contentsafety-${resourceToken}'
272+
var contentSafetyName = '${abbrs.ai.contentSafety}${resourceToken}'
272273

273274
@description('Azure Speech Service Name')
274-
param speechServiceName string = 'speech-${resourceToken}'
275+
var speechServiceName = '${abbrs.ai.speechService}${resourceToken}'
275276

276277
@description('Log Analytics Name')
277-
param logAnalyticsName string = 'la-${resourceToken}'
278+
var logAnalyticsName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${resourceToken}'
278279

279280
param newGuidString string = newGuid()
280281
param searchTag string = 'chatwithyourdata-sa'
@@ -308,15 +309,15 @@ param logLevel string = 'INFO'
308309
param recognizedLanguages string = 'en-US,fr-FR,de-DE,it-IT'
309310

310311
@description('Azure Machine Learning Name')
311-
param azureMachineLearningName string = 'aml-${resourceToken}'
312+
var azureMachineLearningName = '${abbrs.ai.machineLearningWorkspace}${resourceToken}'
312313

313314
var blobContainerName = 'documents'
314315
var queueName = 'doc-processing'
315316
var clientKey = '${uniqueString(guid(subscription().id, deployment().name))}${newGuidString}'
316317
var eventGridSystemTopicName = 'doc-processing'
317318
var tags = { 'azd-env-name': environmentName }
318319
var rgName = 'rg-${environmentName}'
319-
var keyVaultName = 'kv-${resourceToken}'
320+
var keyVaultName = '${abbrs.security.keyVault}${resourceToken}'
320321
var baseUrl = 'https://raw.githubusercontent.com/Azure-Samples/chat-with-your-data-solution-accelerator/main/'
321322

322323
var appversion = 'latest' // Update GIT deployment branch
@@ -351,6 +352,7 @@ resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = {
351352
module managedIdentityModule './core/security/managed-identity.bicep' = if (databaseType == 'PostgreSQL') {
352353
name: 'deploy_managed_identity'
353354
params: {
355+
miName: '${abbrs.security.managedIdentity}${resourceToken}'
354356
solutionName: resourceToken
355357
solutionLocation: location
356358
}

0 commit comments

Comments
 (0)