modules/terraform/gcp/network/main.tf (39 lines of code) (raw):

locals { input_subnet_map = { for subnet in var.network_config.subnets : subnet.name => subnet } input_firewall_map = { for firewall in var.network_config.firewall_rules : firewall.name => firewall } } resource "google_compute_network" "vpc" { name = "${var.network_config.vpc_name}-${var.run_id}" auto_create_subnetworks = false } resource "google_compute_subnetwork" "subnets" { for_each = local.input_subnet_map name = "${each.value.name}-${var.run_id}" ip_cidr_range = each.value.cidr network = google_compute_network.vpc.id dynamic "secondary_ip_range" { for_each = each.value.secondary_ip_ranges != null ? each.value.secondary_ip_ranges : [] content { range_name = secondary_ip_range.value.range_name ip_cidr_range = secondary_ip_range.value.ip_cidr_range } } } resource "google_compute_firewall" "firewall" { for_each = local.input_firewall_map name = "${each.value.name}-${var.run_id}" network = google_compute_network.vpc.name direction = each.value.direction priority = each.value.priority source_ranges = each.value.source_ranges destination_ranges = each.value.destination_ranges source_tags = each.value.source_tags target_tags = each.value.target_tags dynamic "allow" { for_each = each.value.allow content { protocol = allow.value.protocol ports = allow.value.ports } } }