Skip to content

feat: Introduce abbreviations.json and update Bicep files for consistent resource naming #412

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 13 commits into from
May 2, 2025
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -296,4 +296,4 @@ jobs:

curl -X POST "${{ secrets.LOGIC_APP_URL }}" \
-H "Content-Type: application/json" \
-d "$EMAIL_BODY" || echo "Failed to send notification"
-d "$EMAIL_BODY" || echo "Failed to send notification"
227 changes: 227 additions & 0 deletions infra/abbreviations.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,227 @@
{
"ai": {
"aiSearch": "srch-",
"aiServices": "aisa-",
"aiVideoIndexer": "avi-",
"machineLearningWorkspace": "mlw-",
"openAIService": "oai-",
"botService": "bot-",
"computerVision": "cv-",
"contentModerator": "cm-",
"contentSafety": "cs-",
"customVisionPrediction": "cstv-",
"customVisionTraining": "cstvt-",
"documentIntelligence": "di-",
"faceApi": "face-",
"healthInsights": "hi-",
"immersiveReader": "ir-",
"languageService": "lang-",
"speechService": "spch-",
"translator": "trsl-",
"aiHub": "aih-",
"aiHubProject": "aihp-"
},
"analytics": {
"analysisServicesServer": "as",
"databricksWorkspace": "dbw-",
"dataExplorerCluster": "dec",
"dataExplorerClusterDatabase": "dedb",
"dataFactory": "adf-",
"digitalTwin": "dt-",
"streamAnalytics": "asa-",
"synapseAnalyticsPrivateLinkHub": "synplh-",
"synapseAnalyticsSQLDedicatedPool": "syndp",
"synapseAnalyticsSparkPool": "synsp",
"synapseAnalyticsWorkspaces": "synw",
"dataLakeStoreAccount": "dls",
"dataLakeAnalyticsAccount": "dla",
"eventHubsNamespace": "evhns-",
"eventHub": "evh-",
"eventGridDomain": "evgd-",
"eventGridSubscriptions": "evgs-",
"eventGridTopic": "evgt-",
"eventGridSystemTopic": "egst-",
"hdInsightHadoopCluster": "hadoop-",
"hdInsightHBaseCluster": "hbase-",
"hdInsightKafkaCluster": "kafka-",
"hdInsightSparkCluster": "spark-",
"hdInsightStormCluster": "storm-",
"hdInsightMLServicesCluster": "mls-",
"iotHub": "iot-",
"provisioningServices": "provs-",
"provisioningServicesCertificate": "pcert-",
"powerBIEmbedded": "pbi-",
"timeSeriesInsightsEnvironment": "tsi-"
},
"compute": {
"appServiceEnvironment": "ase-",
"appServicePlan": "asp-",
"loadTesting": "lt-",
"availabilitySet": "avail-",
"arcEnabledServer": "arcs-",
"arcEnabledKubernetesCluster": "arck",
"batchAccounts": "ba-",
"cloudService": "cld-",
"communicationServices": "acs-",
"diskEncryptionSet": "des",
"functionApp": "func-",
"gallery": "gal",
"hostingEnvironment": "host-",
"imageTemplate": "it-",
"managedDiskOS": "osdisk",
"managedDiskData": "disk",
"notificationHubs": "ntf-",
"notificationHubsNamespace": "ntfns-",
"proximityPlacementGroup": "ppg-",
"restorePointCollection": "rpc-",
"snapshot": "snap-",
"staticWebApp": "stapp-",
"virtualMachine": "vm",
"virtualMachineScaleSet": "vmss-",
"virtualMachineMaintenanceConfiguration": "mc-",
"virtualMachineStorageAccount": "stvm",
"webApp": "app-"
},
"containers": {
"aksCluster": "aks-",
"aksSystemNodePool": "npsystem-",
"aksUserNodePool": "np-",
"containerApp": "ca-",
"containerAppsEnvironment": "cae-",
"containerRegistry": "cr",
"containerInstance": "ci",
"serviceFabricCluster": "sf-",
"serviceFabricManagedCluster": "sfmc-"
},
"databases": {
"cosmosDBDatabase": "cosmos-",
"cosmosDBApacheCassandra": "coscas-",
"cosmosDBMongoDB": "cosmon-",
"cosmosDBNoSQL": "cosno-",
"cosmosDBTable": "costab-",
"cosmosDBGremlin": "cosgrm-",
"cosmosDBPostgreSQL": "cospos-",
"cacheForRedis": "redis-",
"sqlDatabaseServer": "sql-",
"sqlDatabase": "sqldb-",
"sqlElasticJobAgent": "sqlja-",
"sqlElasticPool": "sqlep-",
"mariaDBServer": "maria-",
"mariaDBDatabase": "mariadb-",
"mySQLDatabase": "mysql-",
"postgreSQLDatabase": "psql-",
"sqlServerStretchDatabase": "sqlstrdb-",
"sqlManagedInstance": "sqlmi-"
},
"developerTools": {
"appConfigurationStore": "appcs-",
"mapsAccount": "map-",
"signalR": "sigr",
"webPubSub": "wps-"
},
"devOps": {
"managedGrafana": "amg-"
},
"integration": {
"apiManagementService": "apim-",
"integrationAccount": "ia-",
"logicApp": "logic-",
"serviceBusNamespace": "sbns-",
"serviceBusQueue": "sbq-",
"serviceBusTopic": "sbt-",
"serviceBusTopicSubscription": "sbts-"
},
"managementGovernance": {
"automationAccount": "aa-",
"applicationInsights": "appi-",
"monitorActionGroup": "ag-",
"monitorDataCollectionRules": "dcr-",
"monitorAlertProcessingRule": "apr-",
"blueprint": "bp-",
"blueprintAssignment": "bpa-",
"dataCollectionEndpoint": "dce-",
"logAnalyticsWorkspace": "log-",
"logAnalyticsQueryPacks": "pack-",
"managementGroup": "mg-",
"purviewInstance": "pview-",
"resourceGroup": "rg-",
"templateSpecsName": "ts-"
},
"migration": {
"migrateProject": "migr-",
"databaseMigrationService": "dms-",
"recoveryServicesVault": "rsv-"
},
"networking": {
"applicationGateway": "agw-",
"applicationSecurityGroup": "asg-",
"cdnProfile": "cdnp-",
"cdnEndpoint": "cdne-",
"connections": "con-",
"dnsForwardingRuleset": "dnsfrs-",
"dnsPrivateResolver": "dnspr-",
"dnsPrivateResolverInboundEndpoint": "in-",
"dnsPrivateResolverOutboundEndpoint": "out-",
"firewall": "afw-",
"firewallPolicy": "afwp-",
"expressRouteCircuit": "erc-",
"expressRouteGateway": "ergw-",
"frontDoorProfile": "afd-",
"frontDoorEndpoint": "fde-",
"frontDoorFirewallPolicy": "fdfp-",
"ipGroups": "ipg-",
"loadBalancerInternal": "lbi-",
"loadBalancerExternal": "lbe-",
"loadBalancerRule": "rule-",
"localNetworkGateway": "lgw-",
"natGateway": "ng-",
"networkInterface": "nic-",
"networkSecurityGroup": "nsg-",
"networkSecurityGroupSecurityRules": "nsgsr-",
"networkWatcher": "nw-",
"privateLink": "pl-",
"privateEndpoint": "pep-",
"publicIPAddress": "pip-",
"publicIPAddressPrefix": "ippre-",
"routeFilter": "rf-",
"routeServer": "rtserv-",
"routeTable": "rt-",
"serviceEndpointPolicy": "se-",
"trafficManagerProfile": "traf-",
"userDefinedRoute": "udr-",
"virtualNetwork": "vnet-",
"virtualNetworkGateway": "vgw-",
"virtualNetworkManager": "vnm-",
"virtualNetworkPeering": "peer-",
"virtualNetworkSubnet": "snet-",
"virtualWAN": "vwan-",
"virtualWANHub": "vhub-"
},
"security": {
"bastion": "bas-",
"keyVault": "kv-",
"keyVaultManagedHSM": "kvmhsm-",
"managedIdentity": "id-",
"sshKey": "sshkey-",
"vpnGateway": "vpng-",
"vpnConnection": "vcn-",
"vpnSite": "vst-",
"webApplicationFirewallPolicy": "waf",
"webApplicationFirewallPolicyRuleGroup": "wafrg"
},
"storage": {
"storSimple": "ssimp",
"backupVault": "bvault-",
"backupVaultPolicy": "bkpol-",
"fileShare": "share-",
"storageAccount": "st",
"storageSyncService": "sss-"
},
"virtualDesktop": {
"labServicesPlan": "lp-",
"virtualDesktopHostPool": "vdpool-",
"virtualDesktopApplicationGroup": "vdag-",
"virtualDesktopWorkspace": "vdws-",
"virtualDesktopScalingPlan": "vdscaling-"
}
}
21 changes: 11 additions & 10 deletions infra/deploy_ai_foundry.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,24 @@ param gptDeploymentCapacity int
param embeddingModel string
param embeddingDeploymentCapacity int
param managedIdentityObjectId string
var abbrs = loadJsonContent('./abbreviations.json')

var storageName = 'st${solutionName}hub'
var storageName = '${abbrs.storage.storageAccount}${solutionName}-hub'
var storageSkuName = 'Standard_LRS'
var aiServicesName = 'ais-${solutionName}'
var aiServicesName = '${abbrs.ai.aiServices}${solutionName}'
// var aiServicesName_m = '${solutionName}-aiservices_m'
// var location_m = solutionLocation
var applicationInsightsName = 'appi-${solutionName}'
var containerRegistryName = 'cr-${solutionName}'
var keyvaultName = 'kv-${solutionName}'
var applicationInsightsName = '${abbrs.managementGovernance.applicationInsights}${solutionName}'
var containerRegistryName = '${abbrs.containers.containerRegistry}${solutionName}'
var keyvaultName = '${abbrs.security.keyVault}${solutionName}'
var location = solutionLocation //'eastus2'
var aiHubName = 'hub-${solutionName}'
var aiHubName = '${abbrs.ai.aiHub}${solutionName}-hub'
var aiHubFriendlyName = aiHubName
var aiHubDescription = 'AI Hub'
var aiProjectName = 'proj-${solutionName}'
var aiProjectName = '${abbrs.ai.aiHubProject}${solutionName}'
var aiProjectFriendlyName = aiProjectName
var aiSearchName = 'srch-${solutionName}'
var workspaceName = 'log-${solutionName}-hub'
var aiSearchName = '${abbrs.ai.aiSearch}${solutionName}'
var workspaceName = '${abbrs.managementGovernance.logAnalyticsWorkspace}${solutionName}'
var aiModelDeployments = [
{
name: gptModelName
Expand Down Expand Up @@ -142,7 +143,7 @@ resource aiServices 'Microsoft.CognitiveServices/accounts@2021-10-01' = {
properties: {
customSubDomainName: aiServicesName
apiProperties: {
statisticsEnabled: false
//statisticsEnabled: false
}
}
}
Expand Down
5 changes: 3 additions & 2 deletions infra/deploy_app_service.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ param solutionName string

// param identity string


@description('Name of App Service plan')
param HostingPlanName string = 'asp-${ solutionName }'
param HostingPlanName string

@description('The pricing tier for the App Service plan')
@allowed(
Expand All @@ -23,7 +24,7 @@ param HostingPlanName string = 'asp-${ solutionName }'
param HostingPlanSku string = 'B1'

@description('Name of Web App')
param WebsiteName string = 'app-${ solutionName }'
param WebsiteName string

// @description('Name of Application Insights')
// param ApplicationInsightsName string = '${ solutionName }-app-insights'
Expand Down
3 changes: 2 additions & 1 deletion infra/deploy_cosmos_db.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ param solutionName string
param solutionLocation string
param keyVaultName string

var accountName = 'cosmos-${ solutionName }'
param accountName string

var databaseName = 'db_conversation_history'
var collectionName = 'conversations'

Expand Down
3 changes: 2 additions & 1 deletion infra/deploy_keyvault.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ param solutionName string
param solutionLocation string
param managedIdentityObjectId string

var keyvaultName = 'kv-${solutionName}'

param keyvaultName string

resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = {
name: keyvaultName
Expand Down
3 changes: 2 additions & 1 deletion infra/deploy_managed_identity.bicep
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// ========== Managed Identity ========== //
targetScope = 'resourceGroup'


@minLength(3)
@maxLength(15)
@description('Solution Name')
Expand All @@ -10,7 +11,7 @@ param solutionName string
param solutionLocation string

@description('Name')
param miName string = 'id-${ solutionName }'
param miName string

resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: miName
Expand Down
2 changes: 1 addition & 1 deletion infra/deploy_storage_account.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ param solutionName string
param solutionLocation string

@description('Name')
param saName string = 'st${ solutionName }'
param saName string

param keyVaultName string
param managedIdentityObjectId string
Expand Down
Loading
Loading