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" diff --git a/terraform/scale/distributed.tfvars b/terraform/scale/distributed.tfvars new file mode 100644 index 00000000..b0b8adf0 --- /dev/null +++ b/terraform/scale/distributed.tfvars @@ -0,0 +1,3 @@ +monolithic = false +anti_affinity = true +risk = "edge" diff --git a/terraform/scale/monolithic.tfvars b/terraform/scale/monolithic.tfvars new file mode 100644 index 00000000..3154d829 --- /dev/null +++ b/terraform/scale/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 +}