RBD (Ceph) Support for Block Storage

Registered by Stephan Renatus

This blueprint will track the work needed to add RBD (Ceph) support to the openstack-block-storage cookbook

Blueprint information

Status:
Complete
Approver:
Justin Shepherd
Priority:
Medium
Drafter:
Stephan Renatus
Direction:
Approved
Assignee:
Stephan Renatus
Definition:
Approved
Series goal:
Accepted for havana
Implementation:
Implemented
Milestone target:
milestone icon havana-stable
Started by
Stephan Renatus
Completed by
Justin Shepherd

Related branches

Sprints

Whiteboard

# Status

The merged changes allow for using RBDs for Volumes (Cinder, block-storage).
The actual provisioning of a Ceph cluster is out-of-scope for this blueprint.

For further information and/or planning, please refer to the mailing list, i .e.
https://groups.google.com/d/msg/opscode-chef-openstack/uKbU88spRVU/pQ9ZNAvjI9gJ
https://groups.google.com/d/msg/opscode-chef-openstack/OSsIKYLKEhA/aXMxlo7vGW8J

# References

http://ceph.com/docs/master/rbd/rbd-openstack/#configure-openstack-to-use-ceph

# Prior art

https://github.com/rcbops-cookbooks/cinder/blob/master/recipes/cinder-volume.rb#L126-L179

# Caveats

- The rbd.py, rados.py and ceph_argparse.py modules are provided by `python-ceph` on Ubuntu, but not via Pypi. Keep this in mind when using your own packages.

# Notes

https://github.com/stackforge/cookbook-openstack-block-storage/blob/master/recipes/volume.rb#L58-L59 already knows about rbd and allows setting the the rbd pool, user and secret uuid config values

Gerrit topic: https://review.openstack.org/#q,topic:bp/rbd-for-block-storage,n,z

Addressed by: https://review.openstack.org/68915
    Fix the RBD driver class reference

Addressed by: https://review.openstack.org/68970
    Make rbd_secret_uuid behave like a shared secret

Addressed by: https://review.openstack.org/69368
    Add ceph_client recipe

Addressed by: https://review.openstack.org/69406
    Define cephx libvirt secret for rbd volumes

Addressed by: https://review.openstack.org/70332
    Ceph RBD integration for openstack-block-storage

Addressed by: https://review.openstack.org/81585
    Really do include_recipe openstack-common::ceph_client

Addressed by: https://review.openstack.org/81838
    Add rbd_* settings to nova.conf

Addressed by: https://review.openstack.org/82071
    Add ceph-common to cinder_ceph_packages

(?)

Work Items

Work items:
cinder-volume needs to be able to talk to the ceph cluster; that is there should be a ceph.conf, a keyring file for the user that is configured as rbd_user, and the proper python libraries (rbd.py, rados.py, ceph_argparse.py): DONE
the openstack-block-storage::volume could be broken up into smaller parts that do more if needed (such as the rbd stuff): TODO
nova-compute/libvirt needs a secret defined: DONE
openstack-common needs a "ceph client" recipe that a) enables the proper ceph repo and b) sets up /etc/ceph/ceph.conf pointing to the cluster (needed by both librados/librbd (cinder-volume and libvirt itself) and by the CLI tools that nova's libvirt driver uses): DONE
openstack-common could also provide a template for /etc/ceph/client.NAME.keyring: DONE

This blueprint contains Public information 
Everyone can see this information.