Uninstalling from Canonical OpenStack Sunbeam
Remove components in the order given below, verifying each step before continuing to the next.
Prerequisites
Juju CLI access to the Sunbeam controller, with both the
openstack(Kubernetes) and machine models reachable. Confirm the machine model's exact name withjuju modelsbefore starting — some Sunbeam environments require the owner-qualified form (e.g.admin/openstack-machines) rather than a bareopenstack-machines.kubectl access to the
openstacknamespace (on Canonical Kubernetes, this is typicallysudo k8s kubectl, not a barekubectl).For Step 6 only: MySQL root credentials (via the
mysqlcharm'sget-passwordaction), RabbitMQ access viarabbitmqctlinside therabbitmqunit, and OpenStack admin credentials (via thekeystonecharm'sget-admin-accountaction).
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-promptIf 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:
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:
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 statusin both models shows notrilio-wlm-k8s,trilio-dm-api-k8s, ortrilio-data-moverapplicationskubectl get pods -n openstack | grep trilioreturns nothingtriliovault-datamoverandtriliovault-dmsare inactive on every compute nodepython3-tvault-contego,python3-trilio-dms, andpython3-s3-fuse-pluginare not installed on any compute node/var/log/triliovaultdoes not exist on any compute nodetrilio_dashboardfails to import on every Horizon unit
After Step 6 (optional, destructive):
no
workloadmgr/dmapidatabases or users remain in MySQLno
workloadmgr/dmapivhosts remain in RabbitMQno
dmapi/TrilioVaultWLMservices, endpoints, or admin trust remain in Keystoneno
svc_trilio_wlm_k8s,svc_trilio_dm_api_k8s, ordatamoverusers remain in Keystone'sservice_domain
Last updated
Was this helpful?
