data "google_client_config" "default" {} # VPC resource "google_compute_network" "network" { name = var.name auto_create_subnetworks = false project = var.project_id != null ? var.project_id : data.google_client_config.default.project } # Subnets resource "google_compute_subnetwork" "subnet" { count = length(var.subnets) name = var.subnets[count.index].name project = var.project_id != null ? var.project_id : data.google_client_config.default.project ip_cidr_range = var.subnets[count.index].cidr region = var.subnets[count.index].region != null ? var.subnets[count.index].region : var.subnets[0].region network = google_compute_network.network.id } # Cloud NAT resource "google_compute_router" "cr" { count = var.nat ? 1 : 0 name = "${var.name}-router" network = var.name project = var.project_id != null ? var.project_id : data.google_client_config.default.project depends_on = [google_compute_network.network] } resource "google_compute_router_nat" "nat" { count = var.nat ? 1 : 0 name = "${var.name}-nat" project = var.project_id != null ? var.project_id : data.google_client_config.default.project router = google_compute_router.cr[0].name nat_ip_allocate_option = "AUTO_ONLY" source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES" enable_dynamic_port_allocation = true }