terraform/network.tf (82 lines of code) (raw):

module "vpc" { source = "./modules/vpc" network_name = var.vpc_network_name project_id = var.project description = var.vpc_network_description routing_mode = var.vpc_network_routing_mode } module "subnet" { source = "./modules/subnets" subnet_name = var.subnet_name subnet_ip = var.subnet_range subnet_region = var.compute_region subnet_private_access = true network_name = module.vpc.network_name project_id = var.project description = var.subnet_description } module "egress_deny_all" { source = "./modules/firewall-rules" name = var.firewall_rule_egress_deny_all_name description = var.firewall_rule_egress_deny_all_description direction = "EGRESS" network_name = module.vpc.network_name project_id = var.project ranges = ["0.0.0.0/0"] deny = [{ protocol = "all" }] } module "egress_allow_restricted" { source = "./modules/firewall-rules" name = var.firewall_rule_egress_allow_restricted_name description = var.firewall_rule_egress_allow_restricted_description direction = "EGRESS" network_name = module.vpc.network_name project_id = var.project # Enables API access to Google APIs and services that are supported by VPC Service Controls. ranges = ["199.36.153.4/30"] priority = 999 allow = [{ protocol = "tcp", ports = ["443"] }] } # The VPC network will use this DNS entry to be able to communicate with Google APIs (e.g. Storage) module "googleapis_private_dns" { source = "./modules/cloud-dns" type = "private" project_id = var.project name = var.dns_googleapis_name domain = "googleapis.com." # For privately visible zones, the set of Virtual Private Cloud resources that the zone is visible from. private_visibility_config_networks = [module.vpc.network_self_link] recordsets = [ { name = "*" type = "CNAME" ttl = 300 records = [ "restricted.googleapis.com." ] }, { name = "restricted" type = "A" ttl = 300 records = [ "199.36.153.4", "199.36.153.5", "199.36.153.6", "199.36.153.7" ] } ] } #module "cloud_run_private_dns" { # source = "./modules/cloud-dns" # # type = "private" # project_id = var.project # name = var.dns_cloudrun_name # domain = "run.app." # description = "none" # private_visibility_config_networks = [module.vpc.network_self_link] # # recordsets = [ # { # name = "*" # type = "A" # ttl = 300 # records = [ # "199.36.153.4", # "199.36.153.5", # "199.36.153.6", # "199.36.153.7" # ] # } # ] # depends_on = [module.googleapis_private_dns] #} module "vpc_connector" { source = "./modules/vpc-serverless-connector" project_id = var.project name = var.serverless_vpc_connector_name region = var.compute_region subnet_name = module.subnet.subnet_name machine_type = var.serverless_vpc_connector_machine_type min_throughput = 200 max_throughput = 1000 }