Skip to content

Commit d2a957a

Browse files
feat: Naming standard and post deployment script related bicep changes (#492)
* adding aifoundry related changes * removed the keyvault renaming from aifoundry * updated main.json * bicep change for ai foundry * added more bicep changes for ai foundry * upgraded bicep version * Included bicep changes for naming standards and updates related to the post deployment script.
1 parent 1a552fd commit d2a957a

13 files changed

+1223
-699
lines changed

infra/bicep/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/bicep/deploy_ai_foundry.bicep

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,23 @@ param embeddingModel string
1010
param embeddingDeploymentCapacity int
1111
param managedIdentityObjectId string
1212

13-
var storageName = 'st${solutionName}hub'
13+
// Load the abbrevations file required to name the azure resources.
14+
var abbrs = loadJsonContent('./abbreviations.json')
15+
16+
var storageName = '${abbrs.storage.storageAccount}${solutionName}hub'
1417
var storageSkuName = 'Standard_LRS'
15-
var aiServicesName = 'ais-${solutionName}'
16-
// var aiServicesName_m = '${solutionName}-aiservices_m'
17-
// var location_m = solutionLocation
18-
var applicationInsightsName = 'appi-${solutionName}'
19-
var containerRegistryName = 'cr-${solutionName}'
18+
var aiServicesName = '${abbrs.ai.aiServices}${solutionName}'
19+
var applicationInsightsName = '${abbrs.managementGovernance.applicationInsights}${solutionName}'
20+
var containerRegistryName = '${abbrs.containers.containerRegistry}${solutionName}'
2021
var keyvaultName = keyVaultName
2122
var location = solutionLocation //'eastus2'
22-
var aiHubName = 'hub-${solutionName}'
23+
var aiHubName = '${abbrs.ai.aiHub}${solutionName}-hub'
2324
var aiHubFriendlyName = aiHubName
2425
var aiHubDescription = 'AI Hub'
25-
var aiProjectName = 'proj-${solutionName}'
26+
var aiProjectName = '${abbrs.ai.aiHubProject}${solutionName}'
2627
var aiProjectFriendlyName = aiProjectName
27-
var aiSearchName = 'srch-${solutionName}'
28-
var workspaceName = 'log-${solutionName}-hub'
28+
var aiSearchName = '${abbrs.ai.aiSearch}${solutionName}'
29+
var workspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionName}'
2930
var aiModelDeployments = [
3031
{
3132
name: gptModelName

infra/bicep/deploy_app_service.bicep

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
// ========== Key Vault ========== //
22
targetScope = 'resourceGroup'
33

4-
@minLength(3)
5-
@maxLength(15)
6-
@description('Solution Name')
7-
param solutionName string
8-
9-
@description('Name of App Service plan')
10-
param HostingPlanName string = '${ solutionName }-app-service-plan'
11-
124
@description('The pricing tier for the App Service plan')
135
@allowed(
146
['F1', 'D1', 'B1', 'B2', 'B3', 'S1', 'S2', 'S3', 'P1', 'P2', 'P3', 'P4','P0v3']
@@ -17,8 +9,8 @@ param HostingPlanName string = '${ solutionName }-app-service-plan'
179

1810
param HostingPlanSku string = 'B2'
1911

20-
@description('Name of Web App')
21-
param WebsiteName string = '${ solutionName }-app-service'
12+
param HostingPlanName string
13+
param WebsiteName string
2214

2315
// @description('Name of Application Insights')
2416
// param ApplicationInsightsName string = '${ solutionName }-app-insights'
@@ -164,7 +156,7 @@ param AZURE_COSMOSDB_ENABLE_FEEDBACK string = 'True'
164156
//@description('Power BI Embed URL')
165157
//param VITE_POWERBI_EMBED_URL string = ''
166158

167-
param Appversion string
159+
param imageTag string
168160

169161
param userassignedIdentityId string
170162
param userassignedIdentityClientId string
@@ -174,7 +166,7 @@ param applicationInsightsId string
174166

175167
// var WebAppImageName = 'DOCKER|ncwaappcontainerreg1.azurecr.io/ncqaappimage:v1.0.0'
176168

177-
var WebAppImageName = 'DOCKER|bycwacontainerreg.azurecr.io/byc-wa-app:${Appversion}'
169+
var WebAppImageName = 'DOCKER|bycwacontainerreg.azurecr.io/byc-wa-app:${imageTag}'
178170

179171
resource HostingPlan 'Microsoft.Web/serverfarms@2020-06-01' = {
180172
name: HostingPlanName
@@ -428,3 +420,5 @@ module cosmosUserRole 'core/database/cosmos/cosmos-role-assign.bicep' = {
428420
Website
429421
]
430422
}
423+
424+
output webAppUrl string = 'https://${WebsiteName}.azurewebsites.net'

infra/bicep/deploy_azure_function.bicep

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
@description('Specifies the location for resources.')
2-
param solutionName string
31
param solutionLocation string
42
@secure()
53
param azureOpenAIApiKey string
@@ -14,7 +12,7 @@ param sqlDbName string
1412
param sqlDbUser string
1513
@secure()
1614
param sqlDbPwd string
17-
param functionAppVersion string
15+
param imageTag string
1816
@description('Azure Function App SQL System Prompt')
1917
param sqlSystemPrompt string
2018
@description('Azure Function App CallTranscript System Prompt')
@@ -25,12 +23,20 @@ param userassignedIdentityId string
2523
param userassignedIdentityClientId string
2624
param storageAccountName string
2725
param applicationInsightsId string
26+
param functionAppName string
27+
param containerAppEnvame string
28+
param logAnalyticsWorkspaceName string
2829

29-
var functionAppName = '${solutionName}fn'
3030
var azureOpenAIDeploymentModel = 'gpt-4o-mini'
3131
var azureOpenAIEmbeddingDeployment = 'text-embedding-ada-002'
3232
var valueOne = '1'
3333

34+
var FnAppImageName = 'DOCKER|bycwacontainerreg.azurecr.io/byc-wa-fn:${imageTag}'
35+
36+
resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' existing = {
37+
name: logAnalyticsWorkspaceName
38+
}
39+
3440
// resource storageAccount 'Microsoft.Storage/storageAccounts@2021-04-01' = {
3541
// name: '${solutionName}fnstorage'
3642
// location: solutionLocation
@@ -61,19 +67,19 @@ var valueOne = '1'
6167
// }
6268

6369
resource containerAppEnv 'Microsoft.App/managedEnvironments@2022-06-01-preview' = {
64-
name: '${solutionName}env'
70+
name: containerAppEnvame
6571
location: solutionLocation
6672
sku: {
6773
name: 'Consumption'
6874
}
6975
properties: {
70-
// appLogsConfiguration: {
71-
// destination: 'log-analytics'
72-
// logAnalyticsConfiguration: {
73-
// customerId: logAnalyticsWorkspace.properties.customerId
74-
// sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
75-
// }
76-
// }
76+
appLogsConfiguration: {
77+
destination: 'log-analytics'
78+
logAnalyticsConfiguration: {
79+
customerId: logAnalyticsWorkspace.properties.customerId
80+
sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey
81+
}
82+
}
7783
}
7884
}
7985

@@ -90,7 +96,7 @@ resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
9096
properties: {
9197
managedEnvironmentId: containerAppEnv.id
9298
siteConfig: {
93-
linuxFxVersion: 'DOCKER|bycwacontainerreg.azurecr.io/byc-wa-fn:${functionAppVersion}'
99+
linuxFxVersion: FnAppImageName
94100
appSettings: [
95101
{
96102
name: 'AzureWebJobsStorage__accountname'
@@ -180,3 +186,5 @@ resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
180186
}
181187
}
182188
}
189+
190+
output functionAppName string = functionApp.name

0 commit comments

Comments
 (0)