modules/ai-foundry-services/search.tf (54 lines of code) (raw):
// Azure Search Service
resource "azapi_resource" "search_service" {
type = "Microsoft.Search/searchServices@2024-03-01-preview"
name = "as-${var.base_name}"
location = var.location
tags = var.search.tags
parent_id = var.resource_group_id
body = {
identity = var.search.search_identity_provider
properties = {
authOptions = var.search.disable_local_auth ? null : {
aadOrApiKey = {
aadAuthFailureMode = "http401WithBearerChallenge"
}
}
disableLocalAuth = var.search.disable_local_auth
encryptionWithCmk = var.search.encryption_with_cmk
hostingMode = var.search.hosting_mode
partitionCount = var.search.partition_count
publicNetworkAccess = var.search.public_network_access
replicaCount = var.search.replica_count
semanticSearch = var.search.semantic_search
networkRuleSet = {
ipRules = []
bypass = "AzureServices"
}
}
sku = {
name = var.search.sku_name
}
}
}
// Private Endpoint for Search
resource "azurerm_private_endpoint" "private_endpoint" {
name = "${var.base_name}-privateEndpoint"
location = var.location
resource_group_name = var.resource_group_name
subnet_id = var.private_endpoint_subnet_id
private_service_connection {
name = "searchServiceConnection"
private_connection_resource_id = azapi_resource.search_service.id
subresource_names = ["searchService"]
is_manual_connection = false
}
private_dns_zone_group {
name = "ai-services-dns-group"
private_dns_zone_ids = length(var.search.private_dns_zone_ids) > 0 ? var.search.private_dns_zone_ids : (
var.search.deploy_private_dns_zones ? [azurerm_private_dns_zone.search_dns_zone[0].id] : []
)
}
}
output "search_service_id" {
value = azapi_resource.search_service.id
}