For the complete documentation index, see llms.txt. This page is also available as Markdown.

Uninstalling from Canonical OpenStack Sunbeam

This page covers removing T4O 6.2.1 from a Canonical OpenStack Sunbeam cloud (trilio-wlm-k8s, trilio-dm-api-k8s, trilio-data-mover-sunbeam) — see Trilio Installation on Canonical OpenStack (Sunbeam) for the matching install procedure.

Remove components in the order given below, verifying each step before continuing to the next.

Backup data already written to your NFS or S3 backup target is never affected by any step in this procedure — T4O does not delete backup-target content when its charms are removed. The workload and backup-target metadata held in T4O's own databases is a separate matter, addressed in the optional Step 6 below.

Prerequisites

  • Juju CLI access to the Sunbeam controller, with both the openstack (Kubernetes) and machine models reachable. Confirm the machine model's exact name with juju models before starting — some Sunbeam environments require the owner-qualified form (e.g. admin/openstack-machines) rather than a bare openstack-machines.

  • kubectl access to the openstack namespace (on Canonical Kubernetes, this is typically sudo k8s kubectl, not a bare kubectl).

  • For Step 6 only: MySQL root credentials (via the mysql charm's get-password action), RabbitMQ access via rabbitmqctl inside the rabbitmq unit, and OpenStack admin credentials (via the keystone charm's get-admin-account action).

Steps to uninstall the Trilio charms

1. Remove the control plane

Removes trilio-wlm-k8s and trilio-dm-api-k8s from the openstack model.

juju switch openstack
juju remove-application trilio-wlm-k8s trilio-dm-api-k8s --destroy-storage --no-prompt

--destroy-storage removes Juju storage volumes owned directly by these two applications. trilio-wlm-k8s and trilio-dm-api-k8s declare no storage of their own, though — they are stateless, and all workload/backup-target metadata lives in the separate mysql application's own storage. This flag therefore does not delete the WLM or DataMover-API databases; see Step 6 if you want those removed as well.

If you intend to redeploy later and keep existing backups usable, back up the workloadmgr database first (Step 6 shows how to reach it) — it is left untouched by this step regardless.

Verify:

2. Remove the data plane

Removes trilio-data-mover (the subordinate DataMover/DMS application) from the machine model.

Verify:

3. Clean up compute-node services and packages

Required on every compute node. Removing trilio-data-mover leaves its systemd services and apt packages installed and running; once the relation is torn down, their RabbitMQ/Keystone credentials are deleted, so both services enter a continuous failure loop until stopped. Run the following via Juju for every openstack-hypervisor/<N> unit (check juju status openstack-hypervisor for the full list):

apt-get purge does not remove the log directory these services wrote to either. Clean it up separately:

This is distinct from /var/log/juju/unit-trilio-data-mover-<N>.log, which Juju itself always preserves for a removed unit on its machine, for any application — not Trilio-specific, and not something this procedure removes.

Optional: remove the Trilio apt repository source file added during install. Confirm its exact filename first rather than assuming one:

Verify:

4. Remove the Horizon plugin

Reverts Horizon to its pre-Trilio image, removing the Trilio dashboard plugin. Two ways to determine which image to restore, in order of preference.

Option A — Restore the saved pre-Trilio baseline (preferred, if captured)

If horizon-baseline.yaml was captured at install time, use its saved image directly instead of a live Charmhub lookup — this guarantees an exact revert to the image Horizon had before Trilio touched it, regardless of how much time has passed or whether Canonical has since published newer horizon-k8s resource revisions on the channel.

Option B — No saved baseline exists (fallback)

If no baseline file was captured at install time (e.g. an install performed before this practice was adopted), fall back to Charmhub's current published default for the channel:

For example, for horizon-k8s revision 289 on the 2024.1/stable channel, the resolved image was ghcr.io/canonical/horizon:2024.1-24.04_edge, giving:

Option B always restores whichever image is Charmhub's current default for horizon-k8s's channel at the time cleanup runs — not necessarily the exact image Horizon had before Trilio was installed, since Canonical publishes horizon-k8s resource updates on its own schedule, independent of Trilio. Prefer Option A whenever a baseline is available.

Verify on every unit, since each rolls over to the new image at a different time:

5. Remove cross-model offers (optional)

If the rabbitmq or keystone-credentials offers were created specifically for T4O, and nothing else consumes them, they may be removed:

6. Remove residual database, message queue, and identity resources

Optional. Because --destroy-storage in Step 1 does not reach the mysql application's own storage, the WLM and DataMover-API databases, their MySQL users, associated RabbitMQ vhosts, and the Keystone service catalog entries, endpoints, and cloud-admin trust are all left behind by Steps 1–5. This step removes them. Skip it entirely if leaving these inert resources behind is acceptable.

MySQL — leftover databases and users:

RabbitMQ — leftover vhosts (their users are cleaned up automatically, but the vhosts themselves are not):

Keystone — leftover service catalog entries, endpoints, and the cloud-admin trust created during install:

Keystone — leftover identity (service) users. openstack user list on its own only shows users in the domain your current auth is scoped to (here, admin_domain, which holds only admin) — it does not list all users across all domains. Trilio's own service accounts live in a separate service_domain, so they stay invisible unless that domain is named explicitly:

This surfaces (alongside the other OpenStack services' own accounts, svc_nova-*, svc_cinder-*, etc., which are not Trilio's and must not be touched):

svc_trilio_dm_api_k8s and datamover have no such dependency and can be removed independently:

Verify:

Verification Summary

After Steps 1–4 (the mandatory path):

  • juju status in both models shows no trilio-wlm-k8s, trilio-dm-api-k8s, or trilio-data-mover applications

  • kubectl get pods -n openstack | grep trilio returns nothing

  • triliovault-datamover and triliovault-dms are inactive on every compute node

  • python3-tvault-contego, python3-trilio-dms, and python3-s3-fuse-plugin are not installed on any compute node

  • /var/log/triliovault does not exist on any compute node

  • trilio_dashboard fails to import on every Horizon unit

After Step 6 (optional, destructive):

  • no workloadmgr/dmapi databases or users remain in MySQL

  • no workloadmgr/dmapi vhosts remain in RabbitMQ

  • no dmapi/TrilioVaultWLM services, endpoints, or admin trust remain in Keystone

  • no svc_trilio_wlm_k8s, svc_trilio_dm_api_k8s, or datamover users remain in Keystone's service_domain

Last updated

Was this helpful?