modules/site-to-site-gateway-conn/main.tf (65 lines of code) (raw):
# Create a site to site vpn connection between a vpn gateway and a vpn site.
resource "azurerm_vpn_gateway_connection" "vpn_site_connection" {
for_each = var.vpn_site_connection != null ? var.vpn_site_connection : {}
name = each.value.name
remote_vpn_site_id = each.value.remote_vpn_site_id
vpn_gateway_id = each.value.vpn_gateway_id
internet_security_enabled = try(each.value.internet_security_enabled, null)
dynamic "vpn_link" {
for_each = each.value.vpn_links != null && length(each.value.vpn_links) > 0 ? each.value.vpn_links : []
content {
name = vpn_link.value.name
vpn_site_link_id = vpn_link.value.vpn_site_link_id
bandwidth_mbps = try(vpn_link.value.bandwidth_mbps, null)
bgp_enabled = try(vpn_link.value.bgp_enabled, null)
connection_mode = try(vpn_link.value.connection_mode, null)
egress_nat_rule_ids = try(vpn_link.value.egress_nat_rule_ids, null)
ingress_nat_rule_ids = try(vpn_link.value.ingress_nat_rule_ids, null)
local_azure_ip_address_enabled = try(vpn_link.value.local_azure_ip_address_enabled, null)
policy_based_traffic_selector_enabled = try(vpn_link.value.policy_based_traffic_selector_enabled, null)
protocol = try(vpn_link.value.protocol, null)
ratelimit_enabled = try(vpn_link.value.ratelimit_enabled, null)
route_weight = try(vpn_link.value.route_weight, null)
shared_key = try(vpn_link.value.shared_key, null)
dynamic "custom_bgp_address" {
for_each = vpn_link.value.custom_bgp_addresses != null ? vpn_link.value.custom_bgp_addresses : []
content {
ip_address = custom_bgp_address.value.ip_address
ip_configuration_id = custom_bgp_address.value.ip_configuration_id
}
}
dynamic "ipsec_policy" {
for_each = vpn_link.value.ipsec_policy != null ? [vpn_link.value.ipsec_policy] : []
content {
dh_group = ipsec_policy.value.dh_group
encryption_algorithm = ipsec_policy.value.encryption_algorithm
ike_encryption_algorithm = ipsec_policy.value.ike_encryption_algorithm
ike_integrity_algorithm = ipsec_policy.value.ike_integrity_algorithm
integrity_algorithm = ipsec_policy.value.integrity_algorithm
pfs_group = ipsec_policy.value.pfs_group
sa_data_size_kb = ipsec_policy.value.sa_data_size_kb
sa_lifetime_sec = ipsec_policy.value.sa_lifetime_sec
}
}
}
}
dynamic "routing" {
for_each = each.value.routing != null ? [each.value.routing] : []
content {
associated_route_table = routing.value.associated_route_table
dynamic "propagated_route_table" {
for_each = routing.value.propagated_route_table != null ? [routing.value.propagated_route_table] : []
content {
route_table_ids = propagated_route_table.value.route_table_ids
labels = propagated_route_table.value.labels
}
}
}
}
dynamic "traffic_selector_policy" {
for_each = each.value.traffic_selector_policy != null ? [each.value.traffic_selector_policy] : []
content {
local_address_ranges = traffic_selector_policy.value.local_address_ranges
remote_address_ranges = traffic_selector_policy.value.remote_address_ranges
}
}
}