92 lines
2.9 KiB
HCL
92 lines
2.9 KiB
HCL
# ==============================================================================
|
|
# 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
|
|
}
|
|
}
|