@@ -746,6 +746,54 @@ module avmStorageAccount 'br/public:avm/res/storage/storage-account:0.20.0' = {
746746var aiSearchName = 'srch-${solutionSuffix }'
747747module 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