From a0ac30a5bbeb61bc0c8bbdf662c6eae9ba3627b2 Mon Sep 17 00:00:00 2001 From: Serge van Ginderachter Date: Thu, 7 May 2015 16:41:18 +0200 Subject: [PATCH] Add Ceph/RBD support to playbooks Currently the playbooks do not allow Ceph to be configured as a backend for Cinder, Glance or Nova. This commit adds a new role called ceph_client to do the required configuration of the hosts and updates the service roles to include the required configuration file changes. This commit requires that a Ceph cluster already exists and does not make any changes to that cluster. ceph_client role, run on the OpenStack service hosts - configures the Ceph apt repo - installs any required Ceph dependencies - copies the ceph.conf file and appropriate keyring file to /etc/ceph - creates the necessary libvirt secrets os_glance role glance-api.conf will set the following variables for Ceph: - [DEFAULT]/show_image_direct_url - [glance_store]/stores - [glance_store]/rbd_store_pool - [glance_store]/rbd_store_user - [glance_store]/rbd_store_ceph_conf - [glance_store]/rbd_store_chunk_size os_nova role nova.conf will set the following variables for Ceph: - [libvirt]/rbd_user - [libvirt]/rbd_secret_uuid - [libvirt]/images_type - [libvirt]/images_rbd_pool - [libvirt]/images_rbd_ceph_conf - [libvirt]/inject_password - [libvirt]/inject_key - [libvirt]/inject_partition - [libvirt]/live_migration_flag os_cinder is not updated because ceph is defined as a backend and that is generated from a dictionary of the config, for an example backend config, see etc/openstack_deploy/openstack_user_config.yml.example pw-token-gen.py is updated so that variables ending in uuid are assigned a UUID. DocImpact Implements: blueprint ceph-block-devices Closes-Bug: #1455238 Change-Id: Ie484ce0bbb93adc53c30be32f291aa5058b20028 --- defaults/main.yml | 5 +++++ templates/nova.conf.j2 | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/defaults/main.yml b/defaults/main.yml index cf0d95df..4ab145bc 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -235,6 +235,11 @@ nova_scheduler_program_name: nova-scheduler # If you want to regenerate the nova users SSH keys, on each run, set this var to True # Otherwise keys will be generated on the first run and not regenerated each run. nova_recreate_keys: False +# Nova Ceph rbd +# Enble and define nova_libvirt_images_rbd_pool to use rbd as nova backend +#nova_libvirt_images_rbd_pool: vms +nova_ceph_client: '{{ cinder_ceph_client }}' +nova_ceph_client_uuid: 517a4663-3927-44bc-9ea7-4a90e1cd4c66 ## General Neutron configuration # If ``nova_osapi_compute_workers`` is unset the system will use half the number of available VCPUS to diff --git a/templates/nova.conf.j2 b/templates/nova.conf.j2 index 47e6bb3e..02b7aa78 100644 --- a/templates/nova.conf.j2 +++ b/templates/nova.conf.j2 @@ -239,3 +239,19 @@ use_virtio_for_bridges = True cpu_mode = {{ nova_cpu_mode }} virt_type = {{ nova_virt_type }} remove_unused_resized_minimum_age_seconds = {{ nova_remove_unused_resized_minimum_age_seconds }} + +{% if cinder_backends_rbd_inuse|bool or nova_libvirt_images_rbd_pool is defined %} +rbd_user = {{ nova_ceph_client }} +rbd_secret_uuid = {{ nova_ceph_client_uuid }} +{% endif %} +{% if nova_libvirt_images_rbd_pool is defined %} +# ceph rbd support +images_type = rbd +images_rbd_pool = {{ nova_libvirt_images_rbd_pool }} +images_rbd_ceph_conf = /etc/ceph/ceph.conf +inject_password = false +inject_key = false +inject_partition = -2 +live_migration_flag="VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_PERSIST_DEST" +{% endif %} +