variable "image_url" { description = "Docker image URL" type = string default = "us-west1-docker.pkg.dev/compass-130ba/builds/api:latest" } variable "env" { description = "Environment (env or prod)" type = string default = "prod" } locals { project = "compass-130ba" region = "us-west1" zone = "us-west1-b" service_name = "api" machine_type = "e2-small" } terraform { backend "gcs" { bucket = "compass-130ba-terraform-state" prefix = "api" } } provider "google" { project = local.project region = local.region zone = local.zone } # Firebase Storage Buckets # Note you still have to deploy the rules: `firebase deploy --only storage` resource "google_storage_bucket" "public_storage" { # /!\ That bucket is different from the one in firebase (compass-130ba.firebasestorage.app) # as it errors when trying to do so: # Error: googleapi: Error 403: Another user owns the domain compass-130ba.firebasestorage.app or a parent domain. You can either verify domain ownership at https://search.google.com/search-console/welcome?new_domain_name=compass-130ba.firebasestorage.app or find the current owner and ask that person to create the bucket for you, forbidden # To be fixed later if they must be the same bucket (shared resources) name = "compass-130ba" location = "US" force_destroy = false uniform_bucket_level_access = true cors { origin = ["*"] method = ["GET", "HEAD", "PUT", "POST", "DELETE"] response_header = ["*"] max_age_seconds = 3600 } } # static IPs resource "google_compute_global_address" "api_lb_ip" { name = "api-lb-ip-2" address_type = "EXTERNAL" } resource "google_compute_managed_ssl_certificate" "api_cert" { name = "api-lb-cert-1" managed { domains = ["api.compassmeet.com"] } } # Instance template with your Docker container resource "google_compute_instance_template" "api_template" { name_prefix = "${local.service_name}-" machine_type = local.machine_type tags = ["lb-health-check"] disk { source_image = "cos-cloud/cos-stable" # Container-Optimized OS auto_delete = true boot = true } network_interface { network = "default" subnetwork = "default" access_config { network_tier = "PREMIUM" } } service_account { scopes = ["cloud-platform"] } metadata = { gce-container-declaration = <