# ============================================================================== # vauco-platform — Vauco sin egen plattforminfrastruktur # Scope: propane-will-491900-m5 / europe-west1 # Håndterer: Cloud Run domain mappings, salgsmodul-subdomener # ============================================================================== locals { labels = { managed-by = "terraform" team = "vauco" environment = "prod" } } # ------------------------------------------------------------------------------ # Eksisterende Cloud Run-service (data source — ikke opprettet av Terraform) # ------------------------------------------------------------------------------ data "google_cloud_run_service" "platform" { name = var.cloud_run_service_name location = var.region project = var.project_id } # ------------------------------------------------------------------------------ # Domain mapping — opax.vauco.no (primær) # ------------------------------------------------------------------------------ resource "google_cloud_run_domain_mapping" "opax" { name = "opax.vauco.no" location = var.region project = var.project_id metadata { namespace = var.project_id labels = local.labels } spec { route_name = data.google_cloud_run_service.platform.name certificate_mode = "AUTOMATIC" force_override = false } lifecycle { # Ikke slett mappingen ved rename — Cloud Run domain mappings er sårbare prevent_destroy = true } } # ------------------------------------------------------------------------------ # Domain mapping — costguard.oss.vauco.no (CG3 — salgsmodul) # ------------------------------------------------------------------------------ resource "google_cloud_run_domain_mapping" "costguard_oss" { name = var.costguard_domain location = var.region project = var.project_id metadata { namespace = var.project_id labels = merge(local.labels, { module = "costguard" }) } spec { route_name = data.google_cloud_run_service.platform.name certificate_mode = "AUTOMATIC" force_override = false } } # ------------------------------------------------------------------------------ # Domain mapping — dynamisk per salgsmodul # Brukes når nye moduler legges til i var.salesmodule_domains # Eks: ["threadstone.oss.vauco.no", "invoicepilot.oss.vauco.no"] # ------------------------------------------------------------------------------ resource "google_cloud_run_domain_mapping" "salesmodules" { for_each = toset(var.salesmodule_domains) name = each.value location = var.region project = var.project_id metadata { namespace = var.project_id labels = merge(local.labels, { module = split(".", each.value)[0] }) } spec { route_name = data.google_cloud_run_service.platform.name certificate_mode = "AUTOMATIC" force_override = false } }