0-bootstrap/modules/cb-private-pool/network.tf (101 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 { peered_ip_range = var.private_worker_pool.enable_network_peering ? "${google_compute_global_address.worker_pool_range[0].address}/${google_compute_global_address.worker_pool_range[0].prefix_length}" : "" } module "peered_network" { source = "terraform-google-modules/network/google" version = "~> 8.0" count = var.private_worker_pool.create_peered_network ? 1 : 0 project_id = var.project_id network_name = local.network_name delete_default_internet_gateway_routes = "true" subnets = [ { subnet_name = "sb-b-cbpools-${var.private_worker_pool.region}" subnet_ip = var.private_worker_pool.peered_network_subnet_ip subnet_region = var.private_worker_pool.region subnet_private_access = "true" subnet_flow_logs = "true" 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 = "Peered subnet for Cloud Build private pool" } ] } resource "google_dns_policy" "default_policy" { count = var.private_worker_pool.create_peered_network ? 1 : 0 project = var.project_id name = "dp-b-cbpools-default-policy" enable_inbound_forwarding = true enable_logging = true networks { network_url = module.peered_network[0].network_self_link } } resource "google_compute_global_address" "worker_pool_range" { count = var.private_worker_pool.enable_network_peering ? 1 : 0 name = "ga-b-cbpools-worker-pool-range" project = var.project_id purpose = "VPC_PEERING" address_type = "INTERNAL" address = var.private_worker_pool.peering_address prefix_length = var.private_worker_pool.peering_prefix_length network = local.peered_network_id } resource "google_service_networking_connection" "worker_pool_conn" { count = var.private_worker_pool.enable_network_peering ? 1 : 0 network = local.peered_network_id service = "servicenetworking.googleapis.com" reserved_peering_ranges = [google_compute_global_address.worker_pool_range[0].name] } resource "google_compute_network_peering_routes_config" "peering_routes" { count = var.private_worker_pool.enable_network_peering ? 1 : 0 project = var.project_id peering = google_service_networking_connection.worker_pool_conn[0].peering network = local.peered_network_name import_custom_routes = true export_custom_routes = true } module "firewall_rules" { source = "terraform-google-modules/network/google//modules/firewall-rules" version = "~> 7.0" count = var.private_worker_pool.enable_network_peering ? 1 : 0 project_id = var.project_id network_name = local.peered_network_id rules = [{ name = "fw-b-cbpools-100-i-a-all-all-all-service-networking" description = "allow ingres from the IPs configured for service networking" direction = "INGRESS" priority = 100 source_tags = null source_service_accounts = null target_tags = null target_service_accounts = null ranges = [local.peered_ip_range] allow = [{ protocol = "all" ports = null }] deny = [] log_config = { metadata = "INCLUDE_ALL_METADATA" } }] }