infra/modules/search/main.tf (53 lines of code) (raw):

resource "azurerm_search_service" "search" { name = var.search_name location = var.location resource_group_name = var.resource_group_name sku = "standard" semantic_search_sku = "free" allowed_ips = var.use_private_endpoints ? var.allowed_ips : null local_authentication_enabled = false } resource "azurerm_role_assignment" "search_reader" { scope = azurerm_search_service.search.id role_definition_name = "Search Index Data Reader" principal_id = var.principal_id } resource "azurerm_role_assignment" "search_data_contributor" { scope = azurerm_search_service.search.id role_definition_name = "Search Index Data Contributor" principal_id = var.principal_id } resource "azurerm_role_assignment" "search_service_contributor" { scope = azurerm_search_service.search.id role_definition_name = "Search Service Contributor" principal_id = var.principal_id } # Private endpoint resource "azurerm_private_dns_zone" "private_dns_zone_search" { count = var.use_private_endpoints ? 1 : 0 name = "privatelink.search.windows.net" resource_group_name = var.resource_group_name } resource "azurerm_private_endpoint" "pep_search" { count = var.use_private_endpoints ? 1 : 0 name = "pep-${var.search_name}" location = var.location resource_group_name = var.resource_group_name subnet_id = var.private_endpoints_subnet_id private_service_connection { name = "${var.search_name}-privateserviceconnection" private_connection_resource_id = azurerm_search_service.search.id is_manual_connection = false subresource_names = ["searchService"] } private_dns_zone_group { name = "${var.search_name}-privatelink" private_dns_zone_ids = [azurerm_private_dns_zone.private_dns_zone_search[0].id] } } resource "azurerm_private_dns_zone_virtual_network_link" "private_dns_zone_link_search" { count = var.use_private_endpoints ? 1 : 0 name = var.search_name resource_group_name = var.resource_group_name private_dns_zone_name = azurerm_private_dns_zone.private_dns_zone_search[0].name virtual_network_id = var.vnet_id }