deploy/terraform/terraform-units/modules/sap_landscape/dns.tf (118 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. #######################################4#######################################8 # # # Network links # # # #######################################4#######################################8 resource "azurerm_private_dns_zone_virtual_network_link" "vnet_sap" { provider = azurerm.dnsmanagement count = local.use_Azure_native_DNS && var.use_private_endpoint && var.dns_settings.register_virtual_network_to_dns ? 1 : 0 depends_on = [ azurerm_virtual_network.vnet_sap, azurerm_subnet.app, azurerm_key_vault.kv_user ] name = format("%s%s%s%s", var.naming.resource_prefixes.dns_link, local.prefix, var.naming.separator, var.naming.resource_suffixes.dns_link ) resource_group_name = var.dns_settings.management_dns_resourcegroup_name private_dns_zone_name = var.dns_settings.dns_label virtual_network_id = azurerm_virtual_network.vnet_sap[0].id registration_enabled = true } resource "azurerm_private_dns_zone_virtual_network_link" "vnet_sap_file" { provider = azurerm.privatelinkdnsmanagement count = local.use_Azure_native_DNS && var.use_private_endpoint ? 1 : 0 depends_on = [ azurerm_virtual_network.vnet_sap, azurerm_subnet.app, azurerm_key_vault.kv_user ] name = format("%s%s%s%s-file", var.naming.resource_prefixes.dns_link, local.prefix, var.naming.separator, var.naming.resource_suffixes.dns_link ) resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name private_dns_zone_name = var.dns_settings.dns_zone_names.file_dns_zone_name virtual_network_id = azurerm_virtual_network.vnet_sap[0].id registration_enabled = false } resource "azurerm_private_dns_zone_virtual_network_link" "storage" { provider = azurerm.privatelinkdnsmanagement count = local.use_Azure_native_DNS && var.use_private_endpoint ? 1 : 0 depends_on = [ azurerm_virtual_network.vnet_sap, azurerm_storage_account.witness_storage, azurerm_key_vault.kv_user ] name = format("%s%s%s%s-blob", var.naming.resource_prefixes.dns_link, local.prefix, var.naming.separator, var.naming.resource_suffixes.dns_link ) resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name private_dns_zone_name = var.dns_settings.dns_zone_names.blob_dns_zone_name virtual_network_id = azurerm_virtual_network.vnet_sap[0].id } resource "azurerm_private_dns_zone_virtual_network_link" "vault" { provider = azurerm.privatelinkdnsmanagement count = local.use_Azure_native_DNS && var.use_private_endpoint ? 1 : 0 depends_on = [ azurerm_virtual_network.vnet_sap, azurerm_key_vault.kv_user ] name = format("%s%s%s%s", var.naming.resource_prefixes.dns_link, local.prefix, var.naming.separator, "vault" ) resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name private_dns_zone_name = var.dns_settings.dns_zone_names.vault_dns_zone_name virtual_network_id = azurerm_virtual_network.vnet_sap[0].id registration_enabled = false } # resource "azurerm_private_dns_a_record" "transport" { # provider = azurerm.privatelinkdnsmanagement # count = var.use_private_endpoint && var.create_transport_storage && local.use_Azure_native_DNS && local.use_AFS_for_shared && length(var.transport_private_endpoint_id) == 0 ? 1 : 0 # name = replace( # lower( # format("%s", local.landscape_shared_transport_storage_account_name) # ), # "/[^a-z0-9]/", # "" # ) # zone_name = var.dns_settings.dns_zone_names.file_dns_zone_name # resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name # ttl = 10 # records = [ # length(var.transport_private_endpoint_id) > 0 ? ( # data.azurerm_private_endpoint_connection.transport[0].private_service_connection[0].private_ip_address) : ( # azurerm_private_endpoint.transport[0].private_service_connection[0].private_ip_address ) # ] # tags = var.tags # } # resource "azurerm_private_dns_a_record" "install" { # provider = azurerm.privatelinkdnsmanagement # count = var.use_private_endpoint && local.use_Azure_native_DNS && local.use_AFS_for_shared && length(var.install_private_endpoint_id) == 0 ? 1 : 0 # name = replace( # lower( # format("%s", local.landscape_shared_install_storage_account_name) # ), # "/[^a-z0-9]/", # "" # ) # zone_name = var.dns_settings.dns_zone_names.file_dns_zone_name # resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name # ttl = 10 # records = [ # length(var.install_private_endpoint_id) > 0 ? ( # data.azurerm_private_endpoint_connection.install[0].private_service_connection[0].private_ip_address) : ( # azurerm_private_endpoint.install[0].private_service_connection[0].private_ip_address) # ] # lifecycle { # ignore_changes = [tags] # } # } #######################################4#######################################8 # # # DNS records # # # #######################################4#######################################8 # resource "azurerm_private_dns_a_record" "witness_storage" { # provider = azurerm.privatelinkdnsmanagement # count = var.dns_settings.register_storage_accounts_keyvaults_with_dns ? 0 : 0 # name = lower(local.witness_storageaccount_name) # zone_name = var.dns_settings.dns_zone_names.blob_dns_zone_name # resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name # ttl = 3600 # records = [azurerm_private_endpoint.witness_storage[count.index].private_service_connection[0].private_ip_address] # tags = var.tags # } # resource "azurerm_private_dns_a_record" "storage_bootdiag" { # provider = azurerm.privatelinkdnsmanagement # count = var.dns_settings.register_storage_accounts_keyvaults_with_dns ? 0 : 0 # name = lower(local.storageaccount_name) # zone_name = var.dns_settings.dns_zone_names.blob_dns_zone_name # resource_group_name = local.resource_group_exists ? ( # data.azurerm_resource_group.resource_group[0].name) : ( # azurerm_resource_group.resource_group[0].name # ) # ttl = 3600 # records = [azurerm_private_endpoint.storage_bootdiag[count.index].private_service_connection[0].private_ip_address] # tags = var.tags # } data "azurerm_private_dns_a_record" "install" { provider = azurerm.privatelinkdnsmanagement count = var.use_private_endpoint && length(var.install_private_endpoint_id) > 0 ? 1 : 0 name = replace( lower( format("%s", local.landscape_shared_install_storage_account_name) ), "/[^a-z0-9]/", "" ) zone_name = var.dns_settings.dns_zone_names.file_dns_zone_name resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name } data "azurerm_private_dns_a_record" "transport" { provider = azurerm.privatelinkdnsmanagement count = var.create_transport_storage && var.use_private_endpoint && length(var.transport_private_endpoint_id) > 0 ? 1 : 0 name = replace( lower( format("%s", local.landscape_shared_transport_storage_account_name) ), "/[^a-z0-9]/", "" ) zone_name = var.dns_settings.dns_zone_names.file_dns_zone_name resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name } # Duplicate code, the private endpoint deployment performs the DNS registration # resource "azurerm_private_dns_a_record" "keyvault" { # provider = azurerm.privatelinkdnsmanagement # count = local.use_Azure_native_DNS && var.use_private_endpoint ? 0 : 0 # name = lower( # format("%s", local.user_keyvault_name) # ) # zone_name = var.dns_settings.dns_zone_names.vault_dns_zone_name # resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name # ttl = 10 # records = [ # length(var.keyvault_private_endpoint_id) > 0 ? ( # data.azurerm_private_endpoint_connection.kv_user[0].private_service_connection[0].private_ip_address) : ( # azurerm_private_endpoint.kv_user[0].private_service_connection[0].private_ip_address # ) # ] # tags = var.tags # } #######################################4#######################################8 # # # DNS zones # # # #######################################4####################################### data "azurerm_private_dns_zone" "file" { provider = azurerm.privatelinkdnsmanagement count = var.dns_settings.register_storage_accounts_keyvaults_with_dns ? 1 : 0 name = var.dns_settings.dns_zone_names.file_dns_zone_name resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name } data "azurerm_private_dns_zone" "storage" { provider = azurerm.privatelinkdnsmanagement count = var.dns_settings.register_storage_accounts_keyvaults_with_dns ? 1 : 0 name = var.dns_settings.dns_zone_names.blob_dns_zone_name resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name } data "azurerm_private_dns_zone" "keyvault" { provider = azurerm.privatelinkdnsmanagement count = var.dns_settings.register_storage_accounts_keyvaults_with_dns ? 1 : 0 name = var.dns_settings.dns_zone_names.vault_dns_zone_name resource_group_name = var.dns_settings.privatelink_dns_resourcegroup_name }