# == 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'] }) }