Skip to content

Commit bf00013

Browse files
refactor: separate search service module to enable managed identity to reduce deployment time
1 parent c7bc996 commit bf00013

2 files changed

Lines changed: 2430 additions & 33 deletions

File tree

infra/main.bicep

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,54 @@ module avmStorageAccount 'br/public:avm/res/storage/storage-account:0.20.0' = {
746746
var aiSearchName = 'srch-${solutionSuffix}'
747747
module avmSearchSearchServices 'br/public:avm/res/search/search-service:0.11.1' = {
748748
name: take('avm.res.cognitive-search-services.${aiSearchName}', 64)
749+
params: {
750+
name: aiSearchName
751+
tags: tags
752+
location: solutionLocation
753+
enableTelemetry: enableTelemetry
754+
diagnosticSettings: enableMonitoring ? [{ workspaceResourceId: logAnalyticsWorkspaceResourceId }] : null
755+
sku: enableScalability ? 'standard' : 'basic'
756+
replicaCount: 1
757+
partitionCount: 1
758+
roleAssignments: [
759+
{
760+
roleDefinitionIdOrName: 'Search Index Data Contributor' // Cognitive Search Contributor
761+
principalId: userAssignedIdentity.outputs.principalId
762+
principalType: 'ServicePrincipal'
763+
}
764+
{
765+
roleDefinitionIdOrName: 'Search Index Data Reader' //'5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'// Cognitive Services OpenAI User
766+
principalId: userAssignedIdentity.outputs.principalId
767+
principalType: 'ServicePrincipal'
768+
}
769+
]
770+
semanticSearch: 'free'
771+
// secretsExportConfiguration: {
772+
// keyVaultResourceId: keyvault.outputs.resourceId
773+
// primaryAdminKeyName: varKvSecretNameAzureSearchKey
774+
// }
775+
// WAF aligned configuration for Private Networking
776+
publicNetworkAccess: enablePrivateNetworking ? 'Disabled' : 'Enabled'
777+
privateEndpoints: enablePrivateNetworking
778+
? [
779+
{
780+
name: 'pep-${aiSearchName}'
781+
customNetworkInterfaceName: 'nic-${aiSearchName}'
782+
privateDnsZoneGroup: {
783+
privateDnsZoneGroupConfigs: [
784+
{ privateDnsZoneResourceId: avmPrivateDnsZones[dnsZoneIndex.search]!.outputs.resourceId }
785+
]
786+
}
787+
subnetResourceId: virtualNetwork!.outputs.pepsSubnetResourceId
788+
}
789+
]
790+
: []
791+
}
792+
}
793+
794+
// Separate module for Search Service to enable managed identity, as this reduces deployment time
795+
module avmSearchSearchServicesEnableIdentity 'br/public:avm/res/search/search-service:0.11.1' = {
796+
name: take('avm.res.search-services-identity.${aiSearchName}', 64)
749797
params: {
750798
name: aiSearchName
751799
tags: tags
@@ -790,6 +838,9 @@ module avmSearchSearchServices 'br/public:avm/res/search/search-service:0.11.1'
790838
]
791839
: []
792840
}
841+
dependsOn: [
842+
avmSearchSearchServices
843+
]
793844
}
794845

795846
// ========== Cognitive Services - OpenAI module ========== //

0 commit comments

Comments
 (0)