From f9cb463fe2b4db92941d9533c5f6fd03fe0c3803 Mon Sep 17 00:00:00 2001 From: Pietro Pasotti Date: Fri, 24 Apr 2026 10:08:22 +0200 Subject: [PATCH 1/3] feat(terraform): pass monolithic flag to coordinated worker modules --- terraform/cos/applications.tf | 12 ++++++++++++ terraform/cos/variables.tf | 15 +++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/terraform/cos/applications.tf b/terraform/cos/applications.tf index deaec9aa..22cef518 100644 --- a/terraform/cos/applications.tf +++ b/terraform/cos/applications.tf @@ -65,6 +65,10 @@ module "loki" { backend_units = var.loki_worker.backend_units read_units = var.loki_worker.read_units write_units = var.loki_worker.write_units + monolithic = var.monolithic + all_config = var.loki_worker.all_config + all_worker_storage_directives = var.loki_worker.all_storage_directives + all_units = var.loki_worker.all_units } module "mimir" { @@ -98,6 +102,10 @@ module "mimir" { backend_units = var.mimir_worker.backend_units read_units = var.mimir_worker.read_units write_units = var.mimir_worker.write_units + monolithic = var.monolithic + all_config = var.mimir_worker.all_config + all_worker_storage_directives = var.mimir_worker.all_storage_directives + all_units = var.mimir_worker.all_units } module "opentelemetry_collector" { @@ -165,6 +173,10 @@ module "tempo" { metrics_generator_units = var.tempo_worker.metrics_generator_units querier_units = var.tempo_worker.querier_units query_frontend_units = var.tempo_worker.query_frontend_units + monolithic = var.monolithic + all_config = var.tempo_worker.all_config + all_worker_storage_directives = var.tempo_worker.all_storage_directives + all_units = var.tempo_worker.all_units } module "traefik" { diff --git a/terraform/cos/variables.tf b/terraform/cos/variables.tf index 6e1d3ba9..b53e6732 100644 --- a/terraform/cos/variables.tf +++ b/terraform/cos/variables.tf @@ -38,6 +38,12 @@ variable "anti_affinity" { default = true } +variable "monolithic" { + description = "Deploy coordinated workers in monolithic mode (single role-all worker per signal) instead of separate backend/read/write workers" + type = bool + default = false +} + # -------------- # TLS configurations -------------- variable "internal_tls" { @@ -187,6 +193,9 @@ variable "loki_worker" { backend_units = optional(number, 3) read_units = optional(number, 3) write_units = optional(number, 3) + all_config = optional(map(string), {}) + all_storage_directives = optional(map(string), {}) + all_units = optional(number, 1) }) default = {} description = "Application configuration for all Loki Workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application" @@ -217,6 +226,9 @@ variable "mimir_worker" { backend_units = optional(number, 3) read_units = optional(number, 3) write_units = optional(number, 3) + all_config = optional(map(string), {}) + all_storage_directives = optional(map(string), {}) + all_units = optional(number, 1) }) default = {} description = "Application configuration for all Mimir Workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application" @@ -294,6 +306,9 @@ variable "tempo_worker" { metrics_generator_units = optional(number, 3) querier_units = optional(number, 3) query_frontend_units = optional(number, 3) + all_config = optional(map(string), {}) + all_storage_directives = optional(map(string), {}) + all_units = optional(number, 1) }) default = {} description = "Application configuration for all Tempo workers. For more details: https://registry.terraform.io/providers/juju/juju/latest/docs/resources/application" From 093eb4dc805b83bbc77ce02d1c4ad972ad920d9f Mon Sep 17 00:00:00 2001 From: Pietro Pasotti Date: Fri, 24 Apr 2026 10:09:16 +0200 Subject: [PATCH 2/3] feat(terraform): add flavor preset tfvars files --- terraform/flavors/distributed-ceph.tfvars | 3 +++ .../flavors/distributed-seaweedfs.tfvars | 3 +++ terraform/flavors/monolithic.tfvars | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 terraform/flavors/distributed-ceph.tfvars create mode 100644 terraform/flavors/distributed-seaweedfs.tfvars create mode 100644 terraform/flavors/monolithic.tfvars diff --git a/terraform/flavors/distributed-ceph.tfvars b/terraform/flavors/distributed-ceph.tfvars new file mode 100644 index 00000000..b0b8adf0 --- /dev/null +++ b/terraform/flavors/distributed-ceph.tfvars @@ -0,0 +1,3 @@ +monolithic = false +anti_affinity = true +risk = "edge" diff --git a/terraform/flavors/distributed-seaweedfs.tfvars b/terraform/flavors/distributed-seaweedfs.tfvars new file mode 100644 index 00000000..b0b8adf0 --- /dev/null +++ b/terraform/flavors/distributed-seaweedfs.tfvars @@ -0,0 +1,3 @@ +monolithic = false +anti_affinity = true +risk = "edge" diff --git a/terraform/flavors/monolithic.tfvars b/terraform/flavors/monolithic.tfvars new file mode 100644 index 00000000..3154d829 --- /dev/null +++ b/terraform/flavors/monolithic.tfvars @@ -0,0 +1,27 @@ +monolithic = true +anti_affinity = false +risk = "edge" + +loki_coordinator = { + units = 1 +} + +mimir_coordinator = { + units = 1 +} + +tempo_coordinator = { + units = 1 +} + +loki_worker = { + all_units = 1 +} + +mimir_worker = { + all_units = 1 +} + +tempo_worker = { + all_units = 1 +} From fa1fabb10ac71cb31eea71f65e21cc3e739ac125 Mon Sep 17 00:00:00 2001 From: Pietro Pasotti Date: Fri, 24 Apr 2026 10:33:50 +0200 Subject: [PATCH 3/3] refactor(terraform): replace flavor presets with independent scale presets Storage and scale are now independent axes. The scale/ directory holds tfvars for the COS module topology (monolithic vs distributed). Storage backend (ceph vs seaweedfs) is handled by the workflow, not tfvars. --- terraform/flavors/distributed-seaweedfs.tfvars | 3 --- .../distributed-ceph.tfvars => scale/distributed.tfvars} | 0 terraform/{flavors => scale}/monolithic.tfvars | 0 3 files changed, 3 deletions(-) delete mode 100644 terraform/flavors/distributed-seaweedfs.tfvars rename terraform/{flavors/distributed-ceph.tfvars => scale/distributed.tfvars} (100%) rename terraform/{flavors => scale}/monolithic.tfvars (100%) diff --git a/terraform/flavors/distributed-seaweedfs.tfvars b/terraform/flavors/distributed-seaweedfs.tfvars deleted file mode 100644 index b0b8adf0..00000000 --- a/terraform/flavors/distributed-seaweedfs.tfvars +++ /dev/null @@ -1,3 +0,0 @@ -monolithic = false -anti_affinity = true -risk = "edge" diff --git a/terraform/flavors/distributed-ceph.tfvars b/terraform/scale/distributed.tfvars similarity index 100% rename from terraform/flavors/distributed-ceph.tfvars rename to terraform/scale/distributed.tfvars diff --git a/terraform/flavors/monolithic.tfvars b/terraform/scale/monolithic.tfvars similarity index 100% rename from terraform/flavors/monolithic.tfvars rename to terraform/scale/monolithic.tfvars