modules/app_gateway_tcp/main.tf (149 lines of code) (raw):

data "azurerm_client_config" "current" {} locals { resource_id_prefix = "/subscriptions/${data.azurerm_client_config.current.subscription_id}/resourceGroups/${var.resource_group_name}/providers/" gateway_id_prefix = "${local.resource_id_prefix}Microsoft.Network/applicationGateways/${var.gateway_name}/" frontend_ip_configuration_name = "feip" evh_backend_address_pool_name = "evh-beap" evh_tcp_setting_name = "evh-be-tcpst" evh_tcp_listener_name = "evh-tcplstn" evh_routing_rule_name = "evh-rt" sql_backend_address_pool_name = "sql-beap" sql_tcp_setting_name = "sql-be-tcpst" sql_tcp_listener_name = "sql-tcplstn" sql_routing_rule_name = "sql-rt" postgresql_backend_address_pool_name = "postgresql-beap" postgresql_tcp_setting_name = "postgresql-be-tcpst" postgresql_tcp_listener_name = "postgresql-tcplstn" postgresql_routing_rule_name = "postgresql-rt" } resource "azapi_update_resource" "gateway_tcp" { count = var.tls_tcp_proxy_enabled ? 1 : 0 name = var.gateway_name parent_id = "/subscriptions/${data.azurerm_client_config.current.subscription_id}/resourceGroups/${var.resource_group_name}" type = "Microsoft.Network/applicationGateways@2022-05-01" ignore_missing_property = false body = jsonencode({ properties = { backendSettingsCollection = [ { name = local.evh_tcp_setting_name properties = { port = 5671 protocol = "Tls" pickHostNameFromBackendAddress = false hostName = var.eventhub_fqdn } }, { name = local.sql_tcp_setting_name properties = { port = 1433 protocol = "Tcp" pickHostNameFromBackendAddress = false hostName = "" } }, { name = local.postgresql_tcp_setting_name properties = { port = 5432 protocol = "Tcp" pickHostNameFromBackendAddress = false hostName = "" } } ] listeners = [ { name = local.evh_tcp_listener_name properties = { frontendIPConfiguration = { id = "${local.gateway_id_prefix}frontendIPConfigurations/${local.frontend_ip_configuration_name}" } frontendPort = { id = "${local.gateway_id_prefix}frontendPorts/port_5671" } sslCertificate = { id = "${local.gateway_id_prefix}sslCertificates/enterprise-certificate" } protocol = "Tls" } }, { name = local.sql_tcp_listener_name properties = { frontendIPConfiguration = { id = "${local.gateway_id_prefix}frontendIPConfigurations/${local.frontend_ip_configuration_name}" } frontendPort = { id = "${local.gateway_id_prefix}frontendPorts/port_1433" } protocol = "Tcp" } }, { name = local.postgresql_tcp_listener_name properties = { frontendIPConfiguration = { id = "${local.gateway_id_prefix}frontendIPConfigurations/${local.frontend_ip_configuration_name}" } frontendPort = { id = "${local.gateway_id_prefix}frontendPorts/port_5432" } protocol = "Tcp" } } ] routingRules = [ { name = local.evh_routing_rule_name properties = { ruleType = "Basic" priority = 80 listener = { id = "${local.gateway_id_prefix}listeners/${local.evh_tcp_listener_name}" } backendAddressPool = { id = "${local.gateway_id_prefix}backendAddressPools/${local.evh_backend_address_pool_name}" } backendSettings = { id = "${local.gateway_id_prefix}backendSettingsCollection/${local.evh_tcp_setting_name}" } } }, { name = local.sql_routing_rule_name properties = { ruleType = "Basic" priority = 90 listener = { id = "${local.gateway_id_prefix}listeners/${local.sql_tcp_listener_name}" } backendAddressPool = { id = "${local.gateway_id_prefix}backendAddressPools/${local.sql_backend_address_pool_name}" } backendSettings = { id = "${local.gateway_id_prefix}backendSettingsCollection/${local.sql_tcp_setting_name}" } } }, { name = local.postgresql_routing_rule_name properties = { ruleType = "Basic" priority = 100 listener = { id = "${local.gateway_id_prefix}listeners/${local.postgresql_tcp_listener_name}" } backendAddressPool = { id = "${local.gateway_id_prefix}backendAddressPools/${local.postgresql_backend_address_pool_name}" } backendSettings = { id = "${local.gateway_id_prefix}backendSettingsCollection/${local.postgresql_tcp_setting_name}" } } } ] } }) }