diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml index 2f45139f..40c3ef44 100644 --- a/.github/workflows/terraform.yml +++ b/.github/workflows/terraform.yml @@ -57,7 +57,7 @@ jobs: run: just unit test-integration-cos-lite: name: COS Lite Terraform integration - uses: canonical/observability-stack/.github/workflows/_integration.yml@main + uses: canonical/observability-stack/.github/workflows/_integration.yml@track/2 with: product: cos_lite runner: ubuntu-latest diff --git a/terraform/cos-lite/README.md b/terraform/cos-lite/README.md index 83786760..1d6fef7f 100644 --- a/terraform/cos-lite/README.md +++ b/terraform/cos-lite/README.md @@ -8,6 +8,7 @@ This is a Terraform module facilitating the deployment of the COS Lite solution, | Name | Version | |------|---------| | [juju](#provider\_juju) | ~> 1.0 | +| [terraform](#provider\_terraform) | n/a | ## Modules diff --git a/terraform/cos-lite/upgrades.tf b/terraform/cos-lite/upgrades.tf new file mode 100644 index 00000000..89925572 --- /dev/null +++ b/terraform/cos-lite/upgrades.tf @@ -0,0 +1,27 @@ +# -------------- # Replace triggers -------------- # + +# -- Grafana -- # + +# [application] Removed the litestream-image resource +# Given a Juju bug, we need to trigger application replacement, otherwise the upgrade will fail +# https://github.com/juju/juju/issues/21648 +# https://github.com/juju/juju/issues/22071 +resource "terraform_data" "grafana_litestream_resource" { + triggers_replace = contains(keys(data.juju_charm.grafana_info.resources), "litestream-image") +} + +# [integration] Ingress interface changed +# The ingress endpoint interface changes from traefik_route to ingress_per_app so we need to +# trigger integration replacement, otherwise the upgrade will fail +# https://github.com/canonical/observability-stack/issues/165 +resource "terraform_data" "grafana_ingress_interface" { + triggers_replace = lookup(data.juju_charm.grafana_info.requires, "ingress", "") +} + +# -------------- # CharmHub API -------------- # + +data "juju_charm" "grafana_info" { + charm = "grafana-k8s" + channel = var.channel + base = "ubuntu@24.04" +} diff --git a/terraform/cos/README.md b/terraform/cos/README.md index 07d1cedd..c513b555 100644 --- a/terraform/cos/README.md +++ b/terraform/cos/README.md @@ -11,6 +11,7 @@ This is a Terraform module facilitating the deployment of the COS solution, usin | Name | Version | |------|---------| | [juju](#provider\_juju) | ~> 1.0 | +| [terraform](#provider\_terraform) | n/a | ## Modules diff --git a/terraform/cos/upgrades.tf b/terraform/cos/upgrades.tf new file mode 100644 index 00000000..89925572 --- /dev/null +++ b/terraform/cos/upgrades.tf @@ -0,0 +1,27 @@ +# -------------- # Replace triggers -------------- # + +# -- Grafana -- # + +# [application] Removed the litestream-image resource +# Given a Juju bug, we need to trigger application replacement, otherwise the upgrade will fail +# https://github.com/juju/juju/issues/21648 +# https://github.com/juju/juju/issues/22071 +resource "terraform_data" "grafana_litestream_resource" { + triggers_replace = contains(keys(data.juju_charm.grafana_info.resources), "litestream-image") +} + +# [integration] Ingress interface changed +# The ingress endpoint interface changes from traefik_route to ingress_per_app so we need to +# trigger integration replacement, otherwise the upgrade will fail +# https://github.com/canonical/observability-stack/issues/165 +resource "terraform_data" "grafana_ingress_interface" { + triggers_replace = lookup(data.juju_charm.grafana_info.requires, "ingress", "") +} + +# -------------- # CharmHub API -------------- # + +data "juju_charm" "grafana_info" { + charm = "grafana-k8s" + channel = var.channel + base = "ubuntu@24.04" +}