Install with Juju
Use these machine charms to deploy on Charmed OpenStack or Canonical OpenStack (Sunbeam):
| Charm | Kind | Runs |
|---|---|---|
ferry | principal | The manager and the movers, as podman containers with host networking. |
ferry-compute | subordinate | The 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
| Option | Default | Meaning |
|---|---|---|
cloud-name | the model's name | This deployment's name, recorded in every backup. |
site-name | the cloud name | The site movers take work from. |
version | the charm's release | The image version to run. |
kms-driver | none | none or barbican. See Encryption. |
volume-pools / vm-pools / image-pools | cinder-ceph, empty, glance | Cinder's, Nova's and Glance's pools. |
local-disk-backup | true | Back up and restore Nova's local disks through the compute agent. |
mover-max-parallel | 2 | Jobs 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.