3-networks-hub-and-spoke/envs/shared/dns-hub.tf (127 lines of code) (raw):

/** * Copyright 2022 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ locals { dns_hub_config = module.dns_hub_config.dns_hub_config dns_hub_network_name = local.dns_hub_config.dns_hub_network_name subnet_dns_hub = local.dns_hub_config.subnet_dns_hub router_ha_enabled = local.dns_hub_config.router_ha_enabled target_name_server_addresses = local.dns_hub_config.target_name_server_addresses vpc_routes = local.dns_hub_config.vpc_routes default_region1 = local.dns_hub_config.regions.region1.default region1_enabled = local.dns_hub_config.regions.region1.enabled default_region2 = local.dns_hub_config.regions.region2.default region2_enabled = local.dns_hub_config.regions.region2.enabled dns_vpc_ip_range = local.dns_hub_config.dns_vpc_ip_range } module "dns_hub_config" { source = "../../modules/nhas_config/dns_hub_config" config_file = "../../vpc_config.yaml" } /****************************************** DNS Hub VPC *****************************************/ module "dns_hub_vpc" { source = "terraform-google-modules/network/google" version = "~> 9.0" project_id = local.dns_hub_project_id network_name = local.dns_hub_network_name shared_vpc_host = "false" delete_default_internet_gateway_routes = "true" subnets = local.subnet_dns_hub routes = local.vpc_routes } /****************************************** Default DNS Policy *****************************************/ resource "google_dns_policy" "default_policy" { project = local.dns_hub_project_id name = "dp-dns-hub-default-policy" enable_inbound_forwarding = true enable_logging = var.dns_enable_logging networks { network_url = module.dns_hub_vpc.network_self_link } } /****************************************** DNS Forwarding *****************************************/ module "dns-forwarding-zone" { source = "terraform-google-modules/cloud-dns/google" version = "~> 5.0" project_id = local.dns_hub_project_id type = "forwarding" name = "fz-dns-hub" domain = var.domain private_visibility_config_networks = [ module.dns_hub_vpc.network_self_link ] target_name_server_addresses = local.target_name_server_addresses } /********************************************************* Routers to advertise DNS proxy range "35.199.192.0/19" *********************************************************/ module "dns_hub_region1_router1" { source = "terraform-google-modules/cloud-router/google" version = "~> 6.0" count = (local.region1_enabled) ? 1 : 0 name = "cr-c-dns-hub-${local.default_region1}-cr1" project = local.dns_hub_project_id network = module.dns_hub_vpc.network_name region = local.default_region1 bgp = { asn = local.dns_bgp_asn_number advertised_ip_ranges = [{ range = "35.199.192.0/19" }] } } module "dns_hub_region1_router2" { source = "terraform-google-modules/cloud-router/google" version = "~> 6.0" count = (local.region1_enabled && local.router_ha_enabled) ? 1 : 0 name = "cr-c-dns-hub-${local.default_region1}-cr2" project = local.dns_hub_project_id network = module.dns_hub_vpc.network_name region = local.default_region1 bgp = { asn = local.dns_bgp_asn_number advertised_ip_ranges = [{ range = "35.199.192.0/19" }] } } module "dns_hub_region2_router1" { source = "terraform-google-modules/cloud-router/google" version = "~> 6.0" count = (local.region2_enabled) ? 1 : 0 name = "cr-c-dns-hub-${local.default_region2}-cr3" project = local.dns_hub_project_id network = module.dns_hub_vpc.network_name region = local.default_region2 bgp = { asn = local.dns_bgp_asn_number advertised_ip_ranges = [{ range = "35.199.192.0/19" }] } } module "dns_hub_region2_router2" { source = "terraform-google-modules/cloud-router/google" version = "~> 6.0" count = (local.region2_enabled && local.router_ha_enabled) ? 1 : 0 name = "cr-c-dns-hub-${local.default_region2}-cr4" project = local.dns_hub_project_id network = module.dns_hub_vpc.network_name region = local.default_region2 bgp = { asn = local.dns_bgp_asn_number advertised_ip_ranges = [{ range = "35.199.192.0/19" }] } }