3-networks-dual-svpc/envs/shared/dns-hub.tf (136 lines of code) (raw):
/**
* Copyright 2021 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.
*/
/******************************************
DNS Hub VPC
*****************************************/
module "dns_hub_vpc" {
source = "terraform-google-modules/network/google"
version = "~> 8.0"
project_id = local.dns_hub_project_id
network_name = "vpc-c-dns-hub"
shared_vpc_host = "false"
delete_default_internet_gateway_routes = "true"
subnets = [{
subnet_name = "sb-c-dns-hub-${local.default_region1}"
subnet_ip = "172.16.0.0/25"
subnet_region = local.default_region1
subnet_private_access = "true"
subnet_flow_logs = var.vpc_flow_logs.enable_logging
subnet_flow_logs_interval = var.vpc_flow_logs.aggregation_interval
subnet_flow_logs_sampling = var.vpc_flow_logs.flow_sampling
subnet_flow_logs_metadata = var.vpc_flow_logs.metadata
subnet_flow_logs_metadata_fields = var.vpc_flow_logs.metadata_fields
subnet_flow_logs_filter = var.vpc_flow_logs.filter_expr
description = "DNS hub subnet for region 1."
}, {
subnet_name = "sb-c-dns-hub-${local.default_region2}"
subnet_ip = "172.16.0.128/25"
subnet_region = local.default_region2
subnet_private_access = "true"
subnet_flow_logs = var.vpc_flow_logs.enable_logging
subnet_flow_logs_interval = var.vpc_flow_logs.aggregation_interval
subnet_flow_logs_sampling = var.vpc_flow_logs.flow_sampling
subnet_flow_logs_metadata = var.vpc_flow_logs.metadata
subnet_flow_logs_metadata_fields = var.vpc_flow_logs.metadata_fields
subnet_flow_logs_filter = var.vpc_flow_logs.filter_expr
description = "DNS hub subnet for region 2."
}]
routes = [{
name = "rt-c-dns-hub-1000-all-default-private-api"
description = "Route through IGW to allow private google api access."
destination_range = "199.36.153.8/30"
next_hop_internet = "true"
priority = "1000"
}]
}
/******************************************
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 = var.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 = "~> 4.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 = "~> 4.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 = "~> 4.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 = "~> 4.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" }]
}
}