Juju Charm - Swift storage
Go to file
James Page 591c084532 Add support for block device encryption
Add new secrets-storage relation to vault, supporting the
use of block device encryption using dm-crypt/vaultlocker.

Prepared devices are now recorded in the local unit kv
store; this information is used to provide a list of
configured block devices to the swift-proxy charm,
rather than the previous best guess provided by
determine_block_devices.  This allows us to use the
dm-crypt device name, rather than the underlying
block device.

Encrypted block devices are unlocked on boot using
vaultlocker-decrypt systemd units (enabled by vaultlocker);
/etc/fstab entries for such devices make use of a
x-systemd.requires option to ensure that the block device
is unlocked prior to attempting to mount it.

Add new storage binding to allow charm to be used with
Juju storage.

Add new ephemeral-unmount configuration option to allow
cloud ephemeral storage to be used for testing purposes;
update functional testing to use this option.  The behaviour
of 'overwrite' was changed to accomodate the use of
encrypted block devices.

Change-Id: I9b3f8cd2de412ee96e0139dba4d4abdf998ecaf2
2018-05-08 12:52:37 +01:00
actions Fix alphanumeric comparisons for openstack and ubuntu releases 2017-04-28 14:02:41 +01:00
charmhelpers Add support for block device encryption 2018-05-08 12:52:37 +01:00
files Support null values on recon/replication module 2017-08-11 19:24:24 -07:00
hooks Add support for block device encryption 2018-05-08 12:52:37 +01:00
lib Add support for block device encryption 2018-05-08 12:52:37 +01:00
templates Add support for block device encryption 2018-05-08 12:52:37 +01:00
tests Add support for block device encryption 2018-05-08 12:52:37 +01:00
unit_tests Add support for block device encryption 2018-05-08 12:52:37 +01:00
.coveragerc Add actions.actions to coverage measuring and reporting. 2015-08-11 09:27:28 +01:00
.gitignore Add support for block device encryption 2018-05-08 12:52:37 +01:00
.gitreview Add gitreview prior to migration to openstack 2016-02-24 21:53:37 +00:00
.project Resynced helpers 2014-03-20 13:47:54 +00:00
.pydevproject Enable xenial/queens amulet testing 2018-03-12 09:34:00 +00:00
.testr.conf Add tox support 2015-11-03 14:03:25 +00:00
actions.yaml Action Managed Upgrades 2015-09-22 15:58:18 -07:00
charm-helpers-hooks.yaml Swift storage ACLs 2017-11-07 10:24:53 -08:00
charm-helpers-tests.yaml Update repo to do ch-sync from Git 2017-09-26 10:29:32 +02:00
config.yaml Add support for block device encryption 2018-05-08 12:52:37 +01:00
copyright Re-license charm as Apache-2.0 2016-07-01 18:15:00 +01:00
hardening.yaml Add hardening support 2016-03-24 11:11:58 +00:00
icon.svg Update charm icon 2017-08-02 17:25:40 +01:00
LICENSE Re-license charm as Apache-2.0 2016-07-01 18:15:00 +01:00
Makefile Update repo to do ch-sync from Git 2017-09-26 10:29:32 +02:00
metadata.yaml Add support for block device encryption 2018-05-08 12:52:37 +01:00
README.md Replace obsolete vanity openstack.org URLs 2017-03-08 19:34:27 +01:00
requirements.txt Fix pbr requirement 2016-04-13 10:25:06 +00:00
revision Remove debug. 2013-07-19 14:13:59 -07:00
setup.cfg Add actions.actions to coverage measuring and reporting. 2015-08-11 09:27:28 +01:00
test-requirements.txt Add support for block device encryption 2018-05-08 12:52:37 +01:00
tox.ini Add support for block device encryption 2018-05-08 12:52:37 +01:00

Overview

This charm provides the swift-storage component of the OpenStack Swift object storage system. It can be deployed as part of its own standalone storage cluster or it can be integrated with the other OpenStack components, assuming those are also managed by Juju. For Swift to function, you'll also need to deploy an additional swift-proxy using the cs:precise/swift-proxy charm.

For more information about Swift and its architecture, visit the official project website https://docs.openstack.org/developer/swift.

This charm was developed to support deploying multiple version of Swift on Ubuntu Precise 12.04, as they relate to the release series of OpenStack. That is, OpenStack Essex corresponds to Swift 1.4.8 while OpenStack Folsom shipped 1.7.4. This charm can be used to deploy either (and future) versions of Swift onto an Ubuntu Precise 12.04, making use of the Ubuntu Cloud Archive when needed.

Usage

This charm is quite simple. Its basic function is to get a storage device setup for swift usage, and run the container, object and account services. The deployment workflow for swift using this charm is covered in the README for the swift-proxy charm at cs:precise/swift-proxy. The following are deployment options to take into consideration when deploying swift-storage.

Zone assignment

If the swift-proxy charm is configured for manual zone assignment (recommended), the 'zone' option should be set for each swift-storage service being deployed. See the swift-proxy README for more information about zone assignment.

Storage

Swift storage nodes require access to local storage and filesystem. The charm takes a 'block-device' config setting that can be used to specify which storage device(s) to use. Options include:

  • 1 or more local block devices (eg, sdb or /dev/sdb). It's important that this device be the same on all machine units assigned to this service. Multiple block devices should be listed as a space-separated list of device nodes.
  • a path to a local file on the filesystem with the size appended after a pipe, eg "/etc/swift/storagedev1.img|5G". This will be created if it does not exist and be mapped to a loopback device. Good for development and testing.
  • "guess" can be used to tell the charm to do its best to find a local devices to use. EXPERIMENTAL

Multiple devices can be specified. In all cases, the resulting block device(s) will each be formatted as XFS file system and mounted at /srv/node/$devname.

Installation repository

The 'openstack-origin' setting allows Swift to be installed from installation repositories and can be used to setup access to the Ubuntu Cloud Archive to support installing Swift versions more recent than what is shipped with Ubuntu 12.04 (1.4.8). For more information, see config.yaml.