OSVauco/infrastructure/terraform/modules/vauco-platform/main.tf

85 lines
2.5 KiB
HCL

# ==============================================================================
# vauco-platform — Vauco sin egen plattforminfrastruktur
# Scope: propane-will-491900-m5 / europe-west1
# Håndterer: Cloud Run domain mappings, salgsmodul-subdomener
#
# MERK: domain mappings bruker Cloud Run v1 API internt (google_cloud_run_domain_mapping
# er et v1-ressurs). Vi bruker derfor service-navnet direkte som string istedenfor
# data source, for å unngå v1/v2 API-konflikt.
# ==============================================================================
locals {
labels = {
managed-by = "terraform"
team = "vauco"
environment = "prod"
}
}
# ------------------------------------------------------------------------------
# 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 = var.cloud_run_service_name
certificate_mode = "AUTOMATIC"
force_override = false
}
lifecycle {
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 = var.cloud_run_service_name
certificate_mode = "AUTOMATIC"
force_override = false
}
}
# ------------------------------------------------------------------------------
# Domain mapping — dynamisk per salgsmodul (for_each)
# Legg til i var.salesmodule_domains i platform.tf
# ------------------------------------------------------------------------------
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 = var.cloud_run_service_name
certificate_mode = "AUTOMATIC"
force_override = false
}
}