diff --git a/deployments/cos-lite/ps7/main.tf b/deployments/cos-lite/ps7/main.tf index 33f1b25..0ff5c25 100644 --- a/deployments/cos-lite/ps7/main.tf +++ b/deployments/cos-lite/ps7/main.tf @@ -1,94 +1,292 @@ -module "ingress_configurator" { - source = "git::https://github.com/canonical/ingress-configurator-operator//terraform?ref=rev72&depth=1" - app_name = "ingress-configurator" +resource "juju_application" "ingress_configurator" { + name = "ingress-configurator" model_uuid = var.model_uuid - channel = "latest/edge" - revision = 72 - config = { hostname = var.external_hostname } + + charm { + name = "ingress-configurator" + channel = "latest/edge" + revision = 72 + base = "ubuntu@24.04" + } + + config = { hostname = var.external_hostname } + constraints = "" + units = 1 } -module "alertmanager" { - source = "git::https://github.com/canonical/alertmanager-k8s-operator//terraform?ref=rev201&depth=1" - app_name = "alertmanager" - channel = "1/stable" +resource "juju_application" "alertmanager" { + name = "alertmanager" config = {} constraints = "arch=amd64" model_uuid = var.model_uuid - revision = 162 storage_directives = {} + trust = true units = 1 + + charm { + name = "alertmanager-k8s" + channel = "1/stable" + revision = 162 + } } -module "catalogue" { - source = "git::https://github.com/canonical/catalogue-k8s-operator//terraform?ref=rev120&depth=1" - app_name = "catalogue" - channel = "1/stable" +resource "juju_application" "catalogue" { + name = "catalogue" config = {} constraints = "arch=amd64" model_uuid = var.model_uuid - revision = 87 storage_directives = {} + trust = true units = 1 + + charm { + name = "catalogue-k8s" + channel = "1/stable" + revision = 87 + } } -module "grafana" { - source = "git::https://github.com/canonical/grafana-k8s-operator//terraform?ref=rev185&depth=1" - app_name = "grafana" - channel = "1/stable" +resource "juju_application" "grafana" { + name = "grafana" config = {} constraints = "arch=amd64" model_uuid = var.model_uuid - revision = 151 storage_directives = {} + trust = true units = 1 + + charm { + name = "grafana-k8s" + channel = "1/stable" + revision = 151 + } } -module "loki" { - source = "git::https://github.com/canonical/loki-k8s-operator//terraform?ref=rev220&depth=1" - app_name = "loki" - channel = "1/stable" +resource "juju_application" "loki" { + name = "loki" config = {} constraints = "arch=amd64" model_uuid = var.model_uuid storage_directives = {} - revision = 199 + trust = true units = 1 + + charm { + name = "loki-k8s" + channel = "1/stable" + revision = 199 + } } -module "prometheus" { - source = "git::https://github.com/canonical/prometheus-k8s-operator//terraform?ref=rev291&depth=1" - app_name = "prometheus" - channel = "1/stable" +resource "juju_application" "prometheus" { + name = "prometheus" config = {} constraints = "arch=amd64" model_uuid = var.model_uuid storage_directives = {} - revision = 247 + trust = true units = 1 + + charm { + name = "prometheus-k8s" + channel = "1/stable" + revision = 247 + } } -module "ssc" { - source = "git::https://github.com/canonical/self-signed-certificates-operator//terraform?ref=b573ad7ccaf550bf3f76e540afb77366352a9dac" - app_name = "ca" - channel = "1/stable" +resource "juju_application" "ssc" { + name = "ca" + model_uuid = var.model_uuid + + charm { + name = "self-signed-certificates" + channel = "1/stable" + revision = 588 + base = "ubuntu@24.04" + } + config = {} constraints = "arch=amd64" - model_uuid = var.model_uuid - revision = 588 units = 1 } +resource "juju_offer" "ssc_send_ca_cert" { + name = "send-ca-cert" + model_uuid = var.model_uuid + application_name = juju_application.ssc.name + endpoints = ["send-ca-cert"] +} + +resource "juju_offer" "ssc_certificates" { + name = "certificates" + model_uuid = var.model_uuid + application_name = juju_application.ssc.name + endpoints = ["certificates"] +} + +locals { + ingress_configurator = { + app_name = juju_application.ingress_configurator.name + endpoints = { + ingress = "ingress" + haproxy_route = "haproxy-route" + haproxy_route_tcp = "haproxy-route-tcp" + } + } + + alertmanager = { + app_name = juju_application.alertmanager.name + endpoints = { + catalogue = "catalogue" + certificates = "certificates" + ingress = "ingress" + tracing = "tracing" + remote_configuration = "remote-configuration" + alerting = "alerting" + karma_dashboard = "karma-dashboard" + self_metrics_endpoint = "self-metrics-endpoint" + grafana_dashboard = "grafana-dashboard" + grafana_source = "grafana-source" + } + } + + catalogue = { + app_name = juju_application.catalogue.name + endpoints = { + certificates = "certificates" + ingress = "ingress" + tracing = "tracing" + catalogue = "catalogue" + } + } + + grafana = { + app_name = juju_application.grafana.name + endpoints = { + catalogue = "catalogue" + certificates = "certificates" + database = "database" + grafana_auth = "grafana-auth" + grafana_dashboard = "grafana-dashboard" + grafana_source = "grafana-source" + ingress = "ingress" + oauth = "oauth" + receive_ca_cert = "receive-ca-cert" + charm_tracing = "charm-tracing" + metrics_endpoint = "metrics-endpoint" + } + } + + loki = { + app_name = juju_application.loki.name + endpoints = { + alertmanager = "alertmanager" + ingress = "ingress" + catalogue = "catalogue" + certificates = "certificates" + charm_tracing = "charm-tracing" + workload_tracing = "workload-tracing" + metrics_endpoint = "metrics-endpoint" + grafana_source = "grafana-source" + grafana_dashboard = "grafana-dashboard" + receive_remote_write = "receive-remote-write" + send_datasource = "send-datasource" + logging = "logging" + } + } + + prometheus = { + app_name = juju_application.prometheus.name + endpoints = { + metrics_endpoint = "metrics-endpoint" + alertmanager = "alertmanager" + ingress = "ingress" + catalogue = "catalogue" + certificates = "certificates" + receive_ca_cert = "receive-ca-cert" + charm_tracing = "charm-tracing" + workload_tracing = "workload-tracing" + self_metrics_endpoint = "self-metrics-endpoint" + grafana_source = "grafana-source" + grafana_dashboard = "grafana-dashboard" + receive_remote_write = "receive-remote-write" + send_datasource = "send-datasource" + prometheus_api = "prometheus-api" + } + } + + ssc = { + app_name = juju_application.ssc.name + requires = { + tracing = "tracing" + } + provides = { + certificates = "certificates" + "send-ca-cert" = "send-ca-cert" + } + offers = { + "send-ca-cert" = juju_offer.ssc_send_ca_cert + certificates = juju_offer.ssc_certificates + } + } +} + +moved { + from = module.ingress_configurator.juju_application.ingress-configurator + to = juju_application.ingress_configurator +} + +moved { + from = module.alertmanager.juju_application.alertmanager + to = juju_application.alertmanager +} + +moved { + from = module.catalogue.juju_application.catalogue + to = juju_application.catalogue +} + +moved { + from = module.grafana.juju_application.grafana + to = juju_application.grafana +} + +moved { + from = module.loki.juju_application.loki + to = juju_application.loki +} + +moved { + from = module.prometheus.juju_application.prometheus + to = juju_application.prometheus +} + +moved { + from = module.ssc.juju_application.self-signed-certificates + to = juju_application.ssc +} + +moved { + from = module.ssc.juju_offer.send_ca_cert + to = juju_offer.ssc_send_ca_cert +} + +moved { + from = module.ssc.juju_offer.certificates + to = juju_offer.ssc_certificates +} + resource "juju_integration" "alertmanager_grafana_dashboards" { model_uuid = var.model_uuid application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.grafana_dashboard + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.grafana_dashboard } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_dashboard + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_dashboard } } @@ -96,13 +294,13 @@ resource "juju_integration" "alertmanager_prometheus" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.alertmanager + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.alertmanager } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.alerting + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.alerting } } @@ -110,13 +308,13 @@ resource "juju_integration" "alertmanager_self_monitoring_prometheus" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.metrics_endpoint + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.metrics_endpoint } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.self_metrics_endpoint + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.self_metrics_endpoint } } @@ -124,13 +322,13 @@ resource "juju_integration" "alertmanager_loki" { model_uuid = var.model_uuid application { - name = module.loki.app_name - endpoint = module.loki.endpoints.alertmanager + name = local.loki.app_name + endpoint = local.loki.endpoints.alertmanager } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.alerting + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.alerting } } @@ -138,13 +336,13 @@ resource "juju_integration" "grafana_source_alertmanager" { model_uuid = var.model_uuid application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.grafana_source + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.grafana_source } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_source + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_source } } @@ -152,13 +350,13 @@ resource "juju_integration" "grafana_self_monitoring_prometheus" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.metrics_endpoint + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.metrics_endpoint } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.metrics_endpoint + name = local.grafana.app_name + endpoint = local.grafana.endpoints.metrics_endpoint } } @@ -166,13 +364,13 @@ resource "juju_integration" "prometheus_grafana_dashboards_provider" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.grafana_dashboard + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.grafana_dashboard } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_dashboard + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_dashboard } } @@ -180,13 +378,13 @@ resource "juju_integration" "prometheus_grafana_source" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.grafana_source + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.grafana_source } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_source + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_source } } @@ -194,13 +392,13 @@ resource "juju_integration" "loki_grafana_dashboards_provider" { model_uuid = var.model_uuid application { - name = module.loki.app_name - endpoint = module.loki.endpoints.grafana_dashboard + name = local.loki.app_name + endpoint = local.loki.endpoints.grafana_dashboard } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_dashboard + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_dashboard } } @@ -208,13 +406,13 @@ resource "juju_integration" "loki_grafana_source" { model_uuid = var.model_uuid application { - name = module.loki.app_name - endpoint = module.loki.endpoints.grafana_source + name = local.loki.app_name + endpoint = local.loki.endpoints.grafana_source } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.grafana_source + name = local.grafana.app_name + endpoint = local.grafana.endpoints.grafana_source } } @@ -222,13 +420,13 @@ resource "juju_integration" "loki_self_monitoring_prometheus" { model_uuid = var.model_uuid application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.metrics_endpoint + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.metrics_endpoint } application { - name = module.loki.app_name - endpoint = module.loki.endpoints.metrics_endpoint + name = local.loki.app_name + endpoint = local.loki.endpoints.metrics_endpoint } } @@ -236,13 +434,13 @@ resource "juju_integration" "catalogue_alertmanager" { model_uuid = var.model_uuid application { - name = module.catalogue.app_name - endpoint = module.catalogue.endpoints.catalogue + name = local.catalogue.app_name + endpoint = local.catalogue.endpoints.catalogue } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.catalogue + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.catalogue } } @@ -250,13 +448,13 @@ resource "juju_integration" "catalogue_grafana" { model_uuid = var.model_uuid application { - name = module.catalogue.app_name - endpoint = module.catalogue.endpoints.catalogue + name = local.catalogue.app_name + endpoint = local.catalogue.endpoints.catalogue } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.catalogue + name = local.grafana.app_name + endpoint = local.grafana.endpoints.catalogue } } @@ -264,13 +462,13 @@ resource "juju_integration" "catalogue_prometheus" { model_uuid = var.model_uuid application { - name = module.catalogue.app_name - endpoint = module.catalogue.endpoints.catalogue + name = local.catalogue.app_name + endpoint = local.catalogue.endpoints.catalogue } application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.catalogue + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.catalogue } } @@ -278,13 +476,13 @@ resource "juju_integration" "alertmanager_ingress" { model_uuid = var.model_uuid application { - name = module.ingress_configurator.app_name - endpoint = module.ingress_configurator.endpoints.ingress + name = local.ingress_configurator.app_name + endpoint = local.ingress_configurator.endpoints.ingress } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.ingress + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.ingress } } @@ -292,13 +490,13 @@ resource "juju_integration" "catalogue_ingress" { model_uuid = var.model_uuid application { - name = module.ingress_configurator.app_name - endpoint = module.ingress_configurator.endpoints.ingress + name = local.ingress_configurator.app_name + endpoint = local.ingress_configurator.endpoints.ingress } application { - name = module.catalogue.app_name - endpoint = module.catalogue.endpoints.ingress + name = local.catalogue.app_name + endpoint = local.catalogue.endpoints.ingress } } @@ -306,13 +504,13 @@ resource "juju_integration" "grafana_ingress" { model_uuid = var.model_uuid application { - name = module.ingress_configurator.app_name - endpoint = module.ingress_configurator.endpoints.ingress + name = local.ingress_configurator.app_name + endpoint = local.ingress_configurator.endpoints.ingress } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.ingress + name = local.grafana.app_name + endpoint = local.grafana.endpoints.ingress } } @@ -320,13 +518,13 @@ resource "juju_integration" "prometheus_ingress" { model_uuid = var.model_uuid application { - name = module.ingress_configurator.app_name - endpoint = module.ingress_configurator.endpoints.ingress + name = local.ingress_configurator.app_name + endpoint = local.ingress_configurator.endpoints.ingress } application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.ingress + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.ingress } } @@ -334,13 +532,13 @@ resource "juju_integration" "loki_ingress" { model_uuid = var.model_uuid application { - name = module.ingress_configurator.app_name - endpoint = module.ingress_configurator.endpoints.ingress + name = local.ingress_configurator.app_name + endpoint = local.ingress_configurator.endpoints.ingress } application { - name = module.loki.app_name - endpoint = module.loki.endpoints.ingress + name = local.loki.app_name + endpoint = local.loki.endpoints.ingress } } @@ -348,13 +546,13 @@ resource "juju_integration" "alertmanager_certificates" { model_uuid = var.model_uuid application { - name = module.ssc.app_name - endpoint = module.ssc.provides.certificates + name = local.ssc.app_name + endpoint = local.ssc.provides.certificates } application { - name = module.alertmanager.app_name - endpoint = module.alertmanager.endpoints.certificates + name = local.alertmanager.app_name + endpoint = local.alertmanager.endpoints.certificates } } @@ -362,13 +560,13 @@ resource "juju_integration" "catalogue_certificates" { model_uuid = var.model_uuid application { - name = module.ssc.app_name - endpoint = module.ssc.provides.certificates + name = local.ssc.app_name + endpoint = local.ssc.provides.certificates } application { - name = module.catalogue.app_name - endpoint = module.catalogue.endpoints.certificates + name = local.catalogue.app_name + endpoint = local.catalogue.endpoints.certificates } } @@ -376,13 +574,13 @@ resource "juju_integration" "grafana_certificates" { model_uuid = var.model_uuid application { - name = module.ssc.app_name - endpoint = module.ssc.provides.certificates + name = local.ssc.app_name + endpoint = local.ssc.provides.certificates } application { - name = module.grafana.app_name - endpoint = module.grafana.endpoints.certificates + name = local.grafana.app_name + endpoint = local.grafana.endpoints.certificates } } @@ -390,13 +588,13 @@ resource "juju_integration" "loki_certificates" { model_uuid = var.model_uuid application { - name = module.ssc.app_name - endpoint = module.ssc.provides.certificates + name = local.ssc.app_name + endpoint = local.ssc.provides.certificates } application { - name = module.loki.app_name - endpoint = module.loki.endpoints.certificates + name = local.loki.app_name + endpoint = local.loki.endpoints.certificates } } @@ -404,72 +602,72 @@ resource "juju_integration" "prometheus_certificates" { model_uuid = var.model_uuid application { - name = module.ssc.app_name - endpoint = module.ssc.provides.certificates + name = local.ssc.app_name + endpoint = local.ssc.provides.certificates } application { - name = module.prometheus.app_name - endpoint = module.prometheus.endpoints.certificates + name = local.prometheus.app_name + endpoint = local.prometheus.endpoints.certificates } } resource "juju_offer" "alertmanager_karma_dashboard" { name = "alertmanager-karma-dashboard" model_uuid = var.model_uuid - application_name = module.alertmanager.app_name + application_name = local.alertmanager.app_name endpoints = ["karma-dashboard"] } resource "juju_offer" "grafana_dashboards" { name = "grafana-dashboards" model_uuid = var.model_uuid - application_name = module.grafana.app_name + application_name = local.grafana.app_name endpoints = ["grafana-dashboard"] } resource "juju_offer" "loki_logging" { name = "loki-logging" model_uuid = var.model_uuid - application_name = module.loki.app_name + application_name = local.loki.app_name endpoints = ["logging"] } resource "juju_offer" "prometheus_receive_remote_write" { name = "prometheus-receive-remote-write" model_uuid = var.model_uuid - application_name = module.prometheus.app_name + application_name = local.prometheus.app_name endpoints = ["receive-remote-write"] } resource "juju_offer" "prometheus_metrics_endpoint" { name = "prometheus-metrics-endpoint" model_uuid = var.model_uuid - application_name = module.prometheus.app_name + application_name = local.prometheus.app_name endpoints = ["metrics-endpoint"] } resource "juju_jaas_access_offer" "grafana_dashboard" { offer_url = juju_offer.grafana_dashboards.url access = "consumer" - users = var.grafana_consumers + groups = var.grafana_consumers } resource "juju_jaas_access_offer" "loki_logging" { offer_url = juju_offer.loki_logging.url access = "consumer" - users = var.loki_consumers + groups = var.loki_consumers } resource "juju_jaas_access_offer" "remote_write" { offer_url = juju_offer.prometheus_receive_remote_write.url access = "consumer" - users = var.remote_write_consumers + groups = var.remote_write_consumers } resource "juju_jaas_access_offer" "metrics_endpoint" { offer_url = juju_offer.prometheus_metrics_endpoint.url access = "consumer" - users = var.metrics_endpoint_consumers + groups = var.metrics_endpoint_consumers } diff --git a/deployments/cos-lite/ps7/outputs.tf b/deployments/cos-lite/ps7/outputs.tf index 2a4c042..2c38aeb 100644 --- a/deployments/cos-lite/ps7/outputs.tf +++ b/deployments/cos-lite/ps7/outputs.tf @@ -11,13 +11,13 @@ output "offers" { output "components" { value = { - alertmanager = module.alertmanager - catalogue = module.catalogue - grafana = module.grafana - loki = module.loki - prometheus = module.prometheus - ssc = module.ssc - ingress_configurator = module.ingress_configurator + alertmanager = local.alertmanager + catalogue = local.catalogue + grafana = local.grafana + loki = local.loki + prometheus = local.prometheus + ssc = local.ssc + ingress_configurator = local.ingress_configurator } description = "All Terraform charm modules which make up this product module" } diff --git a/deployments/falcosidekick/ps7/main.tf b/deployments/falcosidekick/ps7/main.tf index 10c6785..fcb251f 100644 --- a/deployments/falcosidekick/ps7/main.tf +++ b/deployments/falcosidekick/ps7/main.tf @@ -69,6 +69,6 @@ resource "juju_offer" "falcosidekick_http_endpoint" { resource "juju_jaas_access_offer" "falcosidekick_http_endpoint" { offer_url = juju_offer.falcosidekick_http_endpoint.url access = "consumer" - users = var.falcosidekick_http_endpoint_consumers + groups = var.falcosidekick_http_endpoint_consumers }