deploy/terraform/run/sap_landscape/transform.tf (443 lines of code) (raw):

# Copyright (c) Microsoft Corporation. # Licensed under the MIT License. locals { subnet_admin_defined = ( length(var.admin_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_admin.prefix, "")) + length(var.admin_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_admin.arm_id, "")) ) > 0 subnet_admin_arm_id_defined = ( length(var.admin_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_admin.arm_id, "")) ) > 0 subnet_admin_nsg_defined = ( length(var.admin_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_admin.nsg.name, "")) + length(var.admin_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_admin.nsg.arm_id, "")) ) > 0 subnet_db_defined = ( length(var.db_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_db.prefix, "")) + length(var.db_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_db.arm_id, "")) ) > 0 subnet_db_arm_id_defined = ( length(var.db_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_db.arm_id, "")) ) > 0 subnet_db_nsg_defined = ( length(var.db_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_db.nsg.name, "")) + length(var.db_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_db.nsg.arm_id, "")) ) > 0 subnet_app_defined = ( length(var.app_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_app.prefix, "")) + length(var.app_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_app.arm_id, "")) ) > 0 subnet_app_arm_id_defined = ( length(var.app_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_app.arm_id, "")) ) > 0 subnet_app_nsg_defined = ( length(var.app_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_app.nsg.name, "")) + length(var.app_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_app.nsg.arm_id, "")) ) > 0 subnet_web_defined = ( length(var.web_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_web.prefix, "")) + length(var.web_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_web.arm_id, "")) ) > 0 subnet_web_arm_id_defined = ( length(var.web_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_web.arm_id, "")) ) > 0 subnet_web_nsg_defined = ( length(var.web_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_web.nsg.name, "")) + length(var.web_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_web.nsg.arm_id, "")) ) > 0 subnet_storage_defined = ( length(var.storage_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_storage.prefix, "")) + length(var.storage_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_storage.arm_id, "")) ) > 0 subnet_storage_arm_id_defined = ( length(var.storage_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_storage.arm_id, "")) ) > 0 subnet_storage_nsg_defined = ( length(var.storage_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_storage.nsg.name, "")) + length(var.web_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_storage.nsg.arm_id, "")) ) > 0 subnet_iscsi_defined = ( length(var.iscsi_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_iscsi.prefix, "")) + length(var.iscsi_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_iscsi.arm_id, "")) ) > 0 subnet_iscsi_arm_id_defined = ( length(var.iscsi_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_iscsi.arm_id, "")) ) > 0 subnet_iscsi_nsg_defined = ( length(var.iscsi_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_iscsi.nsg.name, "")) + length(var.iscsi_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_iscsi.nsg.arm_id, "")) ) > 0 subnet_anf_defined = ( length(var.anf_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_anf.prefix, "")) + length(var.anf_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_anf.arm_id, "")) ) > 0 subnet_anf_arm_id_defined = ( length(var.anf_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_anf.arm_id, "")) ) > 0 subnet_anf_nsg_defined = ( length(var.anf_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_anf.nsg.name, "")) + length(var.anf_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_anf.nsg.arm_id, "")) ) > 0 subnet_ams_defined = ( length(var.ams_subnet_address_prefix) + length(try(var.infrastructure.vnets.sap.subnet_ams.prefix, "")) + length(var.ams_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_ams.arm_id, "")) ) > 0 subnet_ams_arm_id_defined = ( length(var.ams_subnet_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_ams.arm_id, "")) ) > 0 subnet_ams_nsg_defined = ( length(var.ams_subnet_nsg_name) + length(try(var.infrastructure.vnets.sap.subnet_ams.nsg.name, "")) + length(var.ams_subnet_nsg_arm_id) + length(try(var.infrastructure.vnets.sap.subnet_ams.nsg.arm_id, "")) ) > 0 resource_group = { name = try(var.infrastructure.resource_group.name, var.resourcegroup_name) arm_id = try(var.infrastructure.resource_group.arm_id, var.resourcegroup_arm_id) } resource_group_defined = ( length(local.resource_group.name) + length(local.resource_group.arm_id) ) > 0 ams_instance = { name = var.ams_instance_name create_ams_instance = var.create_ams_instance ams_laws_arm_id = var.ams_laws_arm_id } nat_gateway = { create_nat_gateway = var.deploy_nat_gateway name = var.nat_gateway_name arm_id = try(var.nat_gateway_arm_id, "") region = lower(coalesce(var.location, try(var.infrastructure.region, ""))) public_ip_zones = try(var.nat_gateway_public_ip_zones, ["1", "2", "3"]) public_ip_arm_id = try(var.nat_gateway_public_ip_arm_id, "") idle_timeout_in_minutes = var.nat_gateway_idle_timeout_in_minutes ip_tags = try(var.nat_gateway_public_ip_tags, {}) } temp_infrastructure = { environment = var.environment region = lower(var.location) codename = var.codename tags = var.resourcegroup_tags deploy_monitoring_extension = var.deploy_monitoring_extension deploy_defender_extension = var.deploy_defender_extension user_assigned_identity_id = var.user_assigned_identity_id patch_mode = var.patch_mode patch_assessment_mode = var.patch_assessment_mode shared_access_key_enabled = var.shared_access_key_enabled shared_access_key_enabled_nfs = var.shared_access_key_enabled_nfs encryption_at_host_enabled = var.encryption_at_host_enabled } authentication = { username = coalesce(var.automation_username, "azureadm") password = var.automation_password path_to_public_key = var.automation_path_to_public_key path_to_private_key = var.automation_path_to_private_key } options = { enable_secure_transfer = true use_spn = var.use_spn } key_vault_temp = { exists = length(var.user_keyvault_id) > 0 set_secret_expiry = var.set_secret_expiry } user_keyvault_specified = length(var.user_keyvault_id) > 0 user_keyvault = var.user_keyvault_id spn_keyvault_specified = length(var.spn_keyvault_id) > 0 keyvault_containing_the_spns = local.spn_keyvault_specified ? ( var.spn_keyvault_id ) : ( "" ) key_vault = merge(local.key_vault_temp, ( local.user_keyvault_specified ? ( { keyvault_id_for_system_credentials = local.user_keyvault } ) : null), ( local.spn_keyvault_specified ? ( { keyvault_id_for_deployment_credentials = local.keyvault_containing_the_spns } ) : null ) ) diagnostics_storage_account = { arm_id = var.diagnostics_storage_account_arm_id } witness_storage_account = { arm_id = var.witness_storage_account_arm_id } virtual_networks = { } sap = { name = var.network_name logical_name = var.network_logical_name flow_timeout_in_minutes = var.network_flow_timeout_in_minutes enable_route_propagation = var.network_enable_route_propagation arm_id = var.network_arm_id address_space = tolist(split(",", var.network_address_space)) } subnet_admin = { "name" = var.admin_subnet_name "arm_id" = var.admin_subnet_arm_id "prefix" = var.admin_subnet_address_prefix "defined" = length(var.admin_subnet_address_prefix) > 0 "nsg" = { "name" = var.admin_subnet_nsg_name "arm_id" = var.admin_subnet_nsg_arm_id } } subnet_db = { "name" = var.db_subnet_name "arm_id" = var.db_subnet_arm_id "prefix" = var.db_subnet_address_prefix "defined" = length(var.db_subnet_address_prefix) > 0 "nsg" = { "name" = var.db_subnet_nsg_name "arm_id" = var.db_subnet_nsg_arm_id } } subnet_app = { "name" = var.app_subnet_name "arm_id" = var.app_subnet_arm_id "prefix" = var.app_subnet_address_prefix "defined" = length(var.app_subnet_address_prefix) > 0 "nsg" = { "name" = var.app_subnet_nsg_name "arm_id" = var.app_subnet_nsg_arm_id } } subnet_web = { "name" = var.web_subnet_name "arm_id" = var.web_subnet_arm_id "prefix" = var.web_subnet_address_prefix "defined" = length(var.web_subnet_address_prefix) > 0 "nsg" = { "name" = var.web_subnet_nsg_name "arm_id" = var.web_subnet_nsg_arm_id } } subnet_storage = { "name" = var.storage_subnet_name "arm_id" = var.storage_subnet_arm_id "prefix" = var.storage_subnet_address_prefix "defined" = length(var.storage_subnet_address_prefix) > 0 "nsg" = { "name" = var.storage_subnet_nsg_name "arm_id" = var.storage_subnet_nsg_arm_id } } subnet_anf = { "name" = var.anf_subnet_name "arm_id" = var.anf_subnet_arm_id "prefix" = var.anf_subnet_address_prefix "defined" = length(var.anf_subnet_address_prefix) > 0 "nsg" = { "name" = var.anf_subnet_nsg_name "arm_id" = var.anf_subnet_nsg_arm_id } } subnet_iscsi = { "name" = var.iscsi_subnet_name "arm_id" = var.iscsi_subnet_arm_id "prefix" = var.iscsi_subnet_address_prefix "defined" = length(var.iscsi_subnet_address_prefix) > 0 "nsg" = { "name" = var.iscsi_subnet_nsg_name "arm_id" = var.iscsi_subnet_nsg_arm_id } } subnet_ams = { "name" = var.ams_subnet_name "arm_id" = var.ams_subnet_arm_id "prefix" = var.ams_subnet_address_prefix "defined" = length(var.ams_subnet_address_prefix) > 0 "nsg" = { "name" = var.ams_subnet_nsg_name "arm_id" = var.ams_subnet_nsg_arm_id } } all_subnets = merge(local.sap, ( local.subnet_admin.defined ? ( { "subnet_admin" = local.subnet_admin } ) : ( null )), ( local.subnet_db.defined ? ( { "subnet_db" = local.subnet_db } ) : ( null )), ( local.subnet_app.defined ? ( { "subnet_app" = local.subnet_app } ) : ( null )), ( local.subnet_web.defined ? ( { "subnet_web" = local.subnet_web } ) : ( null )), ( local.subnet_storage.defined ? ( { "subnet_storage" = local.subnet_storage } ) : ( null )), ( local.subnet_anf.defined ? ( { "subnet_anf" = local.subnet_anf } ) : ( null )), ( local.subnet_ams.defined ? ( { "subnet_ams" = local.subnet_ams } ) : ( null )), ( local.subnet_iscsi.defined ? ( { "subnet_iscsi" = local.subnet_iscsi } ) : ( null ) ) ) iscsi = { iscsi_count = var.iscsi_count use_DHCP = length(var.iscsi_nic_ips) > 0 ? false : var.iscsi_useDHCP iscsi_nic_ips = var.iscsi_nic_ips size = try(coalesce(var.iscsi_size, try(var.infrastructure.iscsi.size, "Standard_D2s_v3")), "Standard_D2s_v3") os = { source_image_id = try(coalesce(var.iscsi_image.source_image_id, try(var.infrastructure.iscsi.os.source_image_id, "")), "") publisher = try(coalesce(var.iscsi_image.publisher, try(var.infrastructure.iscsi.os.publisher, "")), "") offer = try(coalesce(var.iscsi_image.offer, try(var.infrastructure.iscsi.os.offer, "")), "") sku = try(coalesce(var.iscsi_image.sku, try(var.infrastructure.iscsi.os.sku, "")), "") version = try(coalesce(var.iscsi_image.version, try(var.infrastructure.iscsi.sku, "")), "") } authentication = { type = try(coalesce(var.iscsi_authentication_type, try(var.infrastructure.iscsi.authentication.type, "key")), "key") username = try(coalesce(var.iscsi_authentication_username, try(var.authentication.username, "azureadm")), "azureadm") } zones = try(var.iscsi_vm_zones, []) user_assigned_identity_id = var.user_assigned_identity_id } infrastructure = merge(local.temp_infrastructure, ( local.resource_group_defined ? ( { "resource_group" = local.resource_group } ) : ( null )), ( { "virtual_networks" = merge(local.virtual_networks, { "sap" = local.all_subnets }) } ), ( { "ams_instance" = local.ams_instance } ), ( { "nat_gateway" = local.nat_gateway } ),( local.iscsi.iscsi_count > 0 ? ( { "iscsi" = local.iscsi } ) : null) ) vm_settings = { count = var.utility_vm_count size = var.utility_vm_size use_DHCP = var.utility_vm_useDHCP image = var.utility_vm_image private_ip_address = var.utility_vm_nic_ips disk_size = var.utility_vm_os_disk_size disk_type = var.utility_vm_os_disk_type } ANF_settings = { use = var.NFS_provider == "ANF" name = var.ANF_account_name arm_id = var.ANF_account_arm_id pool_name = var.ANF_pool_name use_existing_pool = var.ANF_use_existing_pool service_level = var.ANF_service_level size_in_tb = var.ANF_pool_size qos_type = var.ANF_qos_type use_existing_transport_volume = var.ANF_transport_volume_use_existing transport_volume_name = var.ANF_transport_volume_name transport_volume_size = var.ANF_transport_volume_size transport_volume_throughput = var.ANF_transport_volume_throughput transport_volume_zone = var.ANF_transport_volume_zone[0] use_existing_install_volume = var.ANF_install_volume_use_existing install_volume_name = var.ANF_install_volume_name install_volume_size = var.ANF_install_volume_size install_volume_throughput = var.ANF_install_volume_throughput install_volume_zone = var.ANF_install_volume_zone[0] } dns_settings = { use_custom_dns_a_registration = var.use_custom_dns_a_registration dns_label = var.dns_label dns_zone_names = var.dns_zone_names dns_server_list = var.dns_server_list management_dns_resourcegroup_name = coalesce(var.management_dns_resourcegroup_name, local.saplib_resource_group_name) management_dns_subscription_id = coalesce(var.management_dns_subscription_id, local.saplib_subscription_id) privatelink_dns_resourcegroup_name = coalesce(var.privatelink_dns_resourcegroup_name, var.management_dns_resourcegroup_name, local.saplib_resource_group_name) privatelink_dns_subscription_id = coalesce(var.privatelink_dns_subscription_id, var.management_dns_subscription_id, local.saplib_subscription_id) register_storage_accounts_keyvaults_with_dns = var.register_storage_accounts_keyvaults_with_dns register_endpoints_with_dns = var.register_endpoints_with_dns register_virtual_network_to_dns = var.register_virtual_network_to_dns } }