+++ /dev/null
-# == define: cinder::backend::rbd
-#
-# Setup Cinder to use the RBD driver.
-# Compatible for multiple backends
-#
-# === Parameters
-#
-# [*rbd_pool*]
-# (required) Specifies the pool name for the block device driver.
-#
-# [*rbd_user*]
-# (required) A required parameter to configure OS init scripts and cephx.
-#
-# [*volume_backend_name*]
-# (optional) Allows for the volume_backend_name to be separate of $name.
-# Defaults to: $name
-#
-# [*rbd_ceph_conf*]
-# (optional) Path to the ceph configuration file to use
-# Defaults to '/etc/ceph/ceph.conf'
-#
-# [*rbd_flatten_volume_from_snapshot*]
-# (optional) Enable flatten volumes created from snapshots.
-# Defaults to false
-#
-# [*rbd_secret_uuid*]
-# (optional) A required parameter to use cephx.
-# Defaults to false
-#
-# [*volume_tmp_dir*]
-# (optional) Location to store temporary image files if the volume
-# driver does not write them directly to the volume
-# Defaults to false
-#
-# [*rbd_max_clone_depth*]
-# (optional) Maximum number of nested clones that can be taken of a
-# volume before enforcing a flatten prior to next clone.
-# A value of zero disables cloning
-# Defaults to '5'
-#
-# [*glance_api_version*]
-# (optional) DEPRECATED: Use cinder::glance Class instead.
-# Glance API version. (Defaults to '2')
-# Setting this parameter cause a duplicate resource declaration
-# with cinder::glance
-#
-define cinder::backend::rbd (
- $rbd_pool,
- $rbd_user,
- $volume_backend_name = $name,
- $rbd_ceph_conf = '/etc/ceph/ceph.conf',
- $rbd_flatten_volume_from_snapshot = false,
- $rbd_secret_uuid = false,
- $volume_tmp_dir = false,
- $rbd_max_clone_depth = '5',
- # DEPRECATED PARAMETERS
- $glance_api_version = undef,
-) {
-
- include cinder::params
-
- if $glance_api_version {
- warning('The glance_api_version parameter is deprecated, use glance_api_version of cinder::glance class instead.')
- }
-
- cinder_config {
- "${name}/volume_backend_name": value => $volume_backend_name;
- "${name}/volume_driver": value => 'cinder.volume.drivers.rbd.RBDDriver';
- "${name}/rbd_ceph_conf": value => $rbd_ceph_conf;
- "${name}/rbd_user": value => $rbd_user;
- "${name}/rbd_pool": value => $rbd_pool;
- "${name}/rbd_max_clone_depth": value => $rbd_max_clone_depth;
- "${name}/rbd_flatten_volume_from_snapshot": value => $rbd_flatten_volume_from_snapshot;
- }
-
- if $rbd_secret_uuid {
- cinder_config {"${name}/rbd_secret_uuid": value => $rbd_secret_uuid;}
- } else {
- cinder_config {"${name}/rbd_secret_uuid": ensure => absent;}
- }
-
- if $volume_tmp_dir {
- cinder_config {"${name}/volume_tmp_dir": value => $volume_tmp_dir;}
- } else {
- cinder_config {"${name}/volume_tmp_dir": ensure => absent;}
- }
-
- case $::osfamily {
- 'Debian': {
- $override_line = "env CEPH_ARGS=\"--id ${rbd_user}\""
- $override_match = '^env CEPH_ARGS='
- }
- 'RedHat': {
- $override_line = "export CEPH_ARGS=\"--id ${rbd_user}\""
- $override_match = '^export CEPH_ARGS='
- }
- default: {
- fail("unsuported osfamily ${::osfamily}, currently Debian and Redhat are the only supported platforms")
- }
- }
-
- # Creates an empty file if it doesn't yet exist
- ensure_resource('file', $::cinder::params::ceph_init_override, {'ensure' => 'present'})
-
- ensure_resource('file_line', 'set initscript env', {
- line => $override_line,
- path => $::cinder::params::ceph_init_override,
- match => $override_match,
- notify => Service['cinder-volume']
- })
-
-}