From 711fb67868b15ce4147fa50030599cd1a28a711a Mon Sep 17 00:00:00 2001 From: Andrew Dryga Date: Fri, 20 Oct 2023 00:48:57 -0600 Subject: [PATCH] Simplify gateway module --- terraform/environments/production/gateways.tf | 34 +++++++++++------ terraform/modules/gateway-app/main.tf | 38 +++++-------------- terraform/modules/gateway-app/variables.tf | 25 ++++++++---- 3 files changed, 49 insertions(+), 48 deletions(-) diff --git a/terraform/environments/production/gateways.tf b/terraform/environments/production/gateways.tf index ba3b67bbe..8b38ebc6a 100644 --- a/terraform/environments/production/gateways.tf +++ b/terraform/environments/production/gateways.tf @@ -1,4 +1,9 @@ # Deploy our dogfood gateways +locals { + gateways_region = "n1-standard-1" + gateways_zones = ["us-central1-b"] +} + resource "google_compute_network" "gateways" { project = module.google-cloud-project.project.project_id name = "gateways" @@ -12,24 +17,31 @@ resource "google_compute_network" "gateways" { ] } +resource "google_compute_subnetwork" "gateways" { + project = module.google-cloud-project.project.project_id + + name = "gateways" + region = local.gateways_region + + network = google_compute_network.gateways.self_link + + stack_type = "IPV4_IPV6" + ip_cidr_range = "10.101.0.0/24" + ipv6_access_type = "EXTERNAL" + private_ip_google_access = true +} + module "gateways" { count = var.gateway_portal_token != null ? 1 : 0 source = "../../modules/gateway-app" project_id = module.google-cloud-project.project.project_id - compute_network = "projects/${module.google-cloud-project.project.project_id}/global/networks/default" + compute_network = google_compute_network.gateways.self_link + compute_subnetwork = google_compute_subnetwork.gateways.self_link - compute_instances = { - "us-central1" = { - type = "n1-standard-1" - replicas = 2 - zones = ["us-central1-b"] - - network = google_compute_network.gateways.self_link - ip_cidr_range = "10.200.0.0/24" - } - } + compute_region = local.gateways_region + compute_region_zones = local.gateways_zones container_registry = module.google-artifact-registry.url diff --git a/terraform/modules/gateway-app/main.tf b/terraform/modules/gateway-app/main.tf index 03a370800..a1407b011 100644 --- a/terraform/modules/gateway-app/main.tf +++ b/terraform/modules/gateway-app/main.tf @@ -117,33 +117,15 @@ resource "google_project_iam_member" "cloudtrace" { member = "serviceAccount:${google_service_account.application.email}" } -resource "google_compute_subnetwork" "gateways" { - for_each = var.compute_instances - - project = var.project_id - - name = "gateways-${each.key}" - region = each.key - - network = var.compute_network - - stack_type = "IPV4_IPV6" - ip_cidr_range = each.value.ip_cidr_range - ipv6_access_type = "EXTERNAL" - private_ip_google_access = true -} - # Deploy app resource "google_compute_instance_template" "application" { - for_each = var.compute_instances - project = var.project_id - name_prefix = "${local.application_name}-${each.key}-" + name_prefix = "${local.application_name}-" description = "This template is used to create ${local.application_name} instances." - machine_type = each.value.type + machine_type = var.compute_instance_type can_ip_forward = true @@ -167,7 +149,7 @@ resource "google_compute_instance_template" "application" { } network_interface { - subnetwork = google_compute_subnetwork.gateways[each.key].self_link + subnetwork = var.compute_subnetwork stack_type = "IPV4_IPV6" @@ -280,24 +262,22 @@ resource "google_compute_instance_template" "application" { # Use template to deploy zonal instance group resource "google_compute_region_instance_group_manager" "application" { - for_each = var.compute_instances - project = var.project_id - name = "${local.application_name}-group-${each.key}" + name = "${local.application_name}-${var.compute_region}" base_instance_name = local.application_name - region = each.key - distribution_policy_zones = each.value.zones + region = var.compute_region + distribution_policy_zones = var.compute_region_zones - target_size = each.value.replicas + target_size = var.compute_instance_replicas wait_for_instances = true wait_for_instances_status = "STABLE" version { - instance_template = google_compute_instance_template.application[each.key].self_link + instance_template = google_compute_instance_template.application.self_link } # named_port { @@ -335,7 +315,7 @@ resource "google_compute_region_instance_group_manager" "application" { # project = var.project_id # name = "${local.application_name}-healthcheck" -# network = google_compute_network.network.self_link +# network = var.compute_network # source_ranges = local.google_health_check_ip_ranges # target_tags = ["app-${local.application_name}"] diff --git a/terraform/modules/gateway-app/variables.tf b/terraform/modules/gateway-app/variables.tf index 6cfb09db2..61a3ebcb0 100644 --- a/terraform/modules/gateway-app/variables.tf +++ b/terraform/modules/gateway-app/variables.tf @@ -11,16 +11,25 @@ variable "compute_network" { type = string } -variable "compute_instances" { - type = map(object({ - type = string - replicas = number - zones = list(string) +variable "compute_subnetwork" { + type = string +} - ip_cidr_range = string - })) +variable "compute_region" { + type = string +} - description = "List deployment locations for the application." +variable "compute_region_zones" { + type = string + description = "List of zones in the region defined in `compute_region` where replicas should be deployed." +} + +variable "compute_instance_replicas" { + type = string +} + +variable "compute_instance_type" { + type = string } ################################################################################