Skip to main content

Install with Juju

Use these machine charms to deploy on Charmed OpenStack or Canonical OpenStack (Sunbeam):

CharmKindRuns
ferryprincipalThe manager and the movers, as podman containers with host networking.
ferry-computesubordinateThe compute agent, on the hypervisor it is attached to.

The charms connect to the database through MySQL Router, obtain a service user through Keystone's identity-credentials relation, and access Ceph through its client relation. The ferry charm registers the backup catalog entry and creates its application credential.

The charms ask Ceph for three keys, one per relation: the manager's, a read-only one for the movers (ceph-mover) and one for restores (ceph-restore). The last two relations are optional. Without them, movers and restores fall back to the manager's key, and the manager reports this when it starts.

Charmed OpenStack​

juju deploy ./ferry_amd64.charm ferry \
--config cloud-name=<cloud-name> \
--config volume-pools=cinder-ceph --config image-pools=glance --config vm-pools=
juju deploy mysql-router ferry-mysql-router --channel 8.0/stable
juju integrate ferry:shared-db ferry-mysql-router:shared-db
juju integrate ferry-mysql-router:db-router mysql-innodb-cluster:db-router
juju integrate ferry:identity-credentials keystone:identity-credentials
juju integrate ferry:ceph ceph-mon:client
juju integrate ferry:ceph-mover ceph-mon:client
juju integrate ferry:ceph-restore ceph-mon:client

juju deploy ./ferry-compute_amd64.charm ferry-compute
juju integrate ferry-compute:juju-info nova-compute:juju-info
juju integrate ferry-compute:manager ferry:compute

The ferry charm can be placed in an LXD container (--to lxd:<machine>), where Charmed OpenStack keeps its API services. Leave vm-pools empty unless Nova's libvirt-image-backend is rbd.

Operator tasks need a system-scoped token. The keystone charm grants its Admin role only on projects and the admin domain. Give your operator user the system assignment once:

openstack role add --system all --user admin --user-domain admin_domain Admin

Canonical OpenStack (Sunbeam)​

The database router runs in Sunbeam's Kubernetes model. It is offered to the machine model, where the charms run beside Sunbeam's own cinder-volume:

juju deploy -m openstack mysql-router-k8s ferry-mysql-router --channel 8.0/stable --trust \
--config expose-external=loadbalancer
juju integrate -m openstack ferry-mysql-router:backend-database mysql:database
juju offer openstack.ferry-mysql-router:database ferry-mysql-router

M=admin/openstack-machines
juju consume -m $M <owner>/openstack.ferry-mysql-router
juju deploy -m $M ./ferry_amd64.charm ferry --to <machine> \
--config cloud-name=<cloud-name> \
--config volume-pools=cinder-volume-ceph --config image-pools=glance --config vm-pools=
juju integrate -m $M ferry:database ferry-mysql-router
juju integrate -m $M ferry:identity-credentials keystone-credentials
juju integrate -m $M ferry:ceph microceph:ceph
juju integrate -m $M ferry:ceph-mover microceph:ceph
juju integrate -m $M ferry:ceph-restore microceph:ceph

juju deploy -m $M ./ferry-compute_amd64.charm ferry-compute
juju integrate -m $M ferry-compute:juju-info openstack-hypervisor:juju-info
juju integrate -m $M ferry-compute:manager ferry:compute

Sunbeam keeps instance disks on the hypervisors, so the compute agent reads them. It detects the openstack-hypervisor snap and uses the snap's libvirt and the one host path the snap's QEMU can open.

Configure deployment options​

OptionDefaultMeaning
cloud-namethe model's nameThis deployment's name, recorded in every backup.
site-namethe cloud nameThe site movers take work from.
versionthe charm's releaseThe image version to run.
kms-drivernonenone or barbican. See Encryption.
volume-pools / vm-pools / image-poolscinder-ceph, empty, glanceCinder's, Nova's and Glance's pools.
local-disk-backuptrueBack up and restore Nova's local disks through the compute agent.
mover-max-parallel2Jobs each mover runs at the same time.

For hosts that cannot reach the image registry, attach docker save archives as the manager-image, mover-image and compute-image resources.

Send the metrics to Prometheus​

Both charms provide metrics-endpoint for the Canonical Observability Stack (COS):

juju config ferry expose-metrics=true
juju integrate ferry:metrics-endpoint <prometheus>
juju integrate ferry-compute:metrics-endpoint <prometheus>

<prometheus> is COS's prometheus application, or a cross-model offer of its metrics-endpoint. expose-metrics opens the admin ports of every manager, mover and compute agent on the address of their metrics-endpoint binding. These metrics include all projects' usage. Deploy with --bind metrics-endpoint=<space> on a network that only operators and Prometheus reach. The ferry charm provides the alert rules with the relation. Until expose-metrics is set, the relation offers nothing to scrape. The units' status reports this.

Upgrade​

juju refresh both charms. Each unit restarts in the order the service needs, managers first. See Upgrades.