diff --git a/examples/common.yaml b/examples/common.yaml index a9f951d..0c5c039 100644 --- a/examples/common.yaml +++ b/examples/common.yaml @@ -1,58 +1,58 @@ --- ######## Ceph -ceph::profile::params::release: 'mimic' +ceph::profile::params::release: 'nautilus' ######## Ceph.conf ceph::profile::params::fsid: '4b5c8c0a-ff60-454b-a1b4-9747aa737d19' ceph::profile::params::authentication_type: 'cephx' ceph::profile::params::mon_initial_members: 'first, second' ceph::profile::params::mon_host: '10.11.12.2:6789, 10.11.12.3:6789' ceph::profile::params::osd_journal_size: '4096' ceph::profile::params::osd_pool_default_pg_num: '200' ceph::profile::params::osd_pool_default_pgp_num: '200' ceph::profile::params::osd_pool_default_size: '2' ceph::profile::params::osd_pool_default_min_size: '1' ceph::profile::params::cluster_network: '10.12.13.0/24' ceph::profile::params::public_network: '10.11.12.0/24' ceph::profile::params::osd_max_backfills: '1' ceph::profile::params::osd_recovery_max_active: '1' ceph::profile::params::osd_recovery_op_priority: '1' ceph::profile::params::osd_recovery_max_single_start: '1' ceph::profile::params::osd_max_scrubs: '1' ceph::profile::params::osd_op_threads: '2' ceph::profile::params::fs_name: 'fs_name' ceph::profile::params::fs_metadata_pool: 'metadata_pool' ceph::profile::params::fs_data_pool: 'data_pool' ######## Keys ceph::profile::params::mon_key: 'AQATGHJTUCBqIBAA7M2yafV1xctn1pgr3GcKPg==' # as an alternative to specifying the mon key you can provide an exising keyring #ceph::profile::params::mon_keyring: '/etc/ceph/ceph.mon.keyring' ceph::profile::params::client_keys: 'client.admin': secret: 'AQBMGHJTkC8HKhAAJ7NH255wYypgm1oVuV41MA==' mode: '0600' cap_mon: 'allow *' cap_osd: 'allow *' cap_mds: 'allow *' 'client.bootstrap-osd': secret: 'AQARG3JTsDDEHhAAVinHPiqvJkUi5Mww/URupw==' keyring_path: '/var/lib/ceph/bootstrap-osd/ceph.keyring' cap_mon: 'allow profile bootstrap-osd' 'client.bootstrap-mds': secret: 'AQCztJdSyNb0NBAASA2yPZPuwXeIQnDJ9O8gVw==' keyring_path: '/var/lib/ceph/bootstrap-mds/ceph.keyring' cap_mon: 'allow profile bootstrap-mds' 'client.volumes': secret: 'AQA4MPZTOGU0ARAAXH9a0fXxVq0X25n2yPREDw==' mode: '0600' user: 'cinder' group: 'cinder' cap_mon: 'allow r' cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=volumes' ceph::profile::params::osds: '/dev/sdc': journal: '/dev/sdb' '/dev/sdd': journal: '/dev/sdb' diff --git a/manifests/osds.pp b/manifests/osds.pp index 92caf91..0825ce9 100644 --- a/manifests/osds.pp +++ b/manifests/osds.pp @@ -1,50 +1,50 @@ # # Copyright (C) 2014 Nine Internet Solutions AG # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Author: David Gurtner # # == Class: ceph::osds # # Class wrapper for the benefit of scenario_node_terminus # # === Parameters: # # [*args*] A Ceph osds config hash # Optional. # # [*defaults*] A config hash # Optional. Defaults to a empty hash # # [*pid_max*] Value for pid_max. Defaults to undef. Optional. # For OSD nodes it is recommended that you raise pid_max above the # default value because you may hit the system max during # recovery. The recommended value is the absolute max for pid_max: 4194303 -# http://docs.ceph.com/docs/mimic/rados/troubleshooting/troubleshooting-osd/ +# http://docs.ceph.com/docs/nautilus/rados/troubleshooting/troubleshooting-osd/ # class ceph::osds( $args = {}, $defaults = {}, $pid_max = $::ceph::profile::params::pid_max, ) { create_resources(ceph::osd, $args, $defaults) if $pid_max { $sysctl_settings = { 'kernel.pid_max' => { value => $pid_max }, } ensure_resources(sysctl::value,$sysctl_settings) } } diff --git a/manifests/params.pp b/manifests/params.pp index f27feb0..67c1c4d 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -1,72 +1,72 @@ # Copyright (C) 2013, 2014 iWeb Technologies Inc. # Copyright (C) 2014 Nine Internet Solutions AG # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Author: David Moreau Simard # Author: David Gurtner # # == Class: ceph::params # # these parameters need to be accessed from several locations and # should be considered to be constant # # === Parameters: # [*exec_timeout*] The default exec resource timeout, in seconds # Optional. Defaults to 600 # # [*packages*] The ceph package names # Optional. Defaults to ['ceph'] # # [*rgw_socket_path*] The socket path of the rados gateway # Optional. Defaults to '/tmp/radosgw.sock' # # [*enable_sig*] Whether or not enable SIG repository. # CentOS SIG repository contains Ceph packages built by CentOS community. # https://wiki.centos.org/SpecialInterestGroup/Storage/ # Optional. Defaults to False # # [*release*] The name of the Ceph release to install -# Optional. Default to 'mimic'. +# Optional. Default to 'nautilus'. # class ceph::params ( $exec_timeout = 600, $packages = ['ceph'], # just provide the minimum per default $rgw_socket_path = '/tmp/radosgw.sock', $enable_sig = false, - $release = 'mimic', + $release = 'nautilus', ) { $pkg_mds = 'ceph-mds' case $::osfamily { 'Debian': { $pkg_radosgw = 'radosgw' $user_radosgw = 'www-data' $pkg_fastcgi = 'libapache2-mod-fastcgi' $pkg_policycoreutils = 'policycoreutils' } 'RedHat': { $pkg_radosgw = 'ceph-radosgw' $user_radosgw = 'apache' $pkg_fastcgi = 'mod_fastcgi' $pkg_policycoreutils = 'policycoreutils-python' } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, \ module ${module_name} only supports osfamily Debian or RedHat") } } } diff --git a/manifests/profile/params.pp b/manifests/profile/params.pp index 1267d14..469d847 100644 --- a/manifests/profile/params.pp +++ b/manifests/profile/params.pp @@ -1,249 +1,249 @@ # # Copyright (C) 2014 Nine Internet Solutions AG # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Author: David Gurtner # Author: David Moreau Simard # # == Class: ceph::profile::params # # Extract the data from hiera where available # # === Parameters: # # [*fsid*] The cluster's fsid. # Mandatory. Get one with `uuidgen -r`. # # [*release*] The name of the Ceph release to install. # Optional. # # [*authentication_type*] Authentication type. # Optional. none or 'cephx'. Defaults to 'undef'. # # [*mon_initial_members*] The IDs of initial MONs in the cluster during startup. # Optional. String like e.g. 'a, b, c'. # # [*mon_host*] The fqdn of MONs in the cluster. They can also be declared # individually through ceph::mon. # Optional. String like e.g. 'a, b, c'. # # [*ms_bind_ipv6*] Enables Ceph daemons to bind to IPv6 addresses. # Optional. Boolean. Default provided by Ceph. # # [*osd_journal_size*] The size of the journal file/device. # Optional. Integer. Default provided by Ceph. # # [*osd_max_object_name_len*] The maximum length of a rados object name # Optional. Integer. Default to undef. # # [*osd_max_object_namespace_len*] The maximum length of a rados object name # Optional. Integer. Default to undef. # # [*osd_pool_default_pg_num*] The default number of PGs per pool. # Optional. Integer. Default provided by Ceph. # # [*osd_pool_default_pgp_num*] The default flags for new pools. # Optional. Integer. Default provided by Ceph. # # [*osd_pool_default_size*] Number of replicas for objects in the pool # Optional. Integer. Default provided by Ceph. # # [*osd_pool_default_min_size*] The default minimum num of replicas. # Optional. Integer. Default provided by Ceph. # # [*osd_pool_default_crush_rule*] The default CRUSH ruleset to use # when creating a pool. # Optional. Integer. Default provided by Ceph. # # [*osd_crush_update_on_start*] The default OSDs behaviour on start when # it comes to registering their location in the CRUSH map. # Optional. Boolean. Defaults to undef. # # [*mon_osd_full_ratio*] Percentage of disk space used before # an OSD considered full # Optional. Integer e.g. 95, NOTE: ends in config as .95 # Default provided by Ceph. # # [*mon_osd_nearfull_ratio*] Percentage of disk space used before # an OSD considered nearfull # Optional. Float e.g. 90, NOTE: ends in config as .90 # Default provided by Ceph. # # [*cluster_network*] The address of the cluster network. # Optional. {cluster-network-ip/netmask} # # [*public_network*] The address of the public network. # Optional. {public-network-ip/netmask} # # [*public_addr*] The MON bind IP address. # Optional. The IPv(4|6) address on which MON binds itself. # This is useful when not specifying public_network or when there is more than one IP address on # the same network and you want to be specific about the IP to bind the MON on. # # [*mds_key*] The mds secret key. # Optional but required when using cephx. # # [*mon_key*] The mon secret key. # Optional. Either mon_key or mon_keyring need to be set when using cephx. # # [*mgr_key*] The mgr secret key. # Optional. Either mgr_key or mgr_keyring need to be set when using cephx. # # [*mon_keyring*] The location of the keyring retrieved by default # Optional. Either mon_key or mon_keyring need to be set when using cephx # # [*client_keys*] A hash of client keys that will be passed to ceph::keys. # Optional but required when using cephx. # See ceph::key for hash parameters andstructure. # # [*osds*] A Ceph osd hash # Optional. # # [*manage_repo*] Whether we should manage the local repository (true) or depend # on what is available (false). Set this to false when you want to manage the # the repo by yourself. # Optional. Defaults to true # # [*rgw_name*] the name for the radosgw cluster. Must be in the format # "radosgw.${name}" where name is whatever you want # Optional. # # [*rgw_user*] the user ID radosgw should run as. # Optional. # # [*rgw_print_continue*] should http 100 continue be used # Optional. # # [*frontend_type*] What type of frontend to use # Optional. Options are apache-fastcgi, apache-proxy-fcgi or civetweb # # [*rgw_frontends*] Arguments to the rgw frontend # Optional. Example: "civetweb port=7480" # # [*osd_max_backfills*] The maximum number of backfills allowed to or from a single OSD. # Optional. Default provided by Ceph # # [*osd_recovery_max_active*] The number of active recovery requests per OSD at one time. # Optional. Default provided by Ceph # # [*osd_recovery_op_priority*] The priority set for recovery operations. # Optional. Default provided by Ceph # # [*osd_recovery_max_single_start*] The maximum number of recovery operations that will be # newly started per PG that the OSD is recovering. # Optional. Default provided by Ceph # # [*osd_max_scrubs*] The maximum number of simultaneous scrub operations for a Ceph OSD Daemon. # Optional. Default provided by Ceph # # [*osd_op_threads*] The number of threads to service Ceph OSD Daemon operations. # Set to 0 to disable it. # Optional. Default provided by Ceph # # [*pid_max*] Value for pid_max. Defaults to undef. Optional. # For OSD nodes it is recommended that you raise pid_max above the # default value because you may hit the system max during # recovery. The recommended value is the absolute max for pid_max: 4194303 -# http://docs.ceph.com/docs/mimic/rados/troubleshooting/troubleshooting-osd/ +# http://docs.ceph.com/docs/nautilus/rados/troubleshooting/troubleshooting-osd/ # # [*rgw_keystone_version*] The api version for keystone. # Possible values 'v2.0', 'v3' # Optional. Default is 'v2.0' # # [*rgw_keystone_admin_domain*] The name of OpenStack domain with admin # privilege when using OpenStack Identity API v3 # Optional. Default is undef # # [*rgw_keystone_admin_project*] The name of OpenStack project with admin # privilege when using OpenStack Identity API v3 # Optional. Default is undef # # [*rgw_keystone_admin_user*] The user name of OpenStack tenant with admin # privilege (Service Tenant) # Required if is 'v3'. # # [*rgw_keystone_admin_password*] The password for OpenStack admin user # Required if is 'v3'. # # [*rbd_mirror_client_name*] Name of the cephx client key used for rbd mirroring # Optional. Default is undef # # [*fs_name*] The FS name. # Optional but required when using fs. # # [*fs_metadata_pool*] The FS metadata pool name. # Optional but required when using fs. # # [*fs_data_pool*] The FS data pool name. # Optional but required when using fs. # # [*rbd_default_features*] Set RBD features configuration. # Optional. String. Defaults to undef. # class ceph::profile::params ( $fsid = undef, $release = undef, $authentication_type = undef, $mon_initial_members = undef, $mon_host = undef, $ms_bind_ipv6 = undef, $osd_journal_size = undef, $osd_max_object_name_len = undef, $osd_max_object_namespace_len = undef, $osd_pool_default_pg_num = undef, $osd_pool_default_pgp_num = undef, $osd_pool_default_size = undef, $osd_pool_default_min_size = undef, $osd_crush_update_on_start = undef, $cluster_network = undef, $public_network = undef, $public_addr = undef, $mds_key = undef, $mon_key = undef, $mgr_key = undef, $mon_keyring = undef, $client_keys = {}, $osds = undef, $manage_repo = true, $rgw_name = undef, $rgw_user = undef, $rgw_print_continue = undef, $frontend_type = undef, $rgw_frontends = undef, $osd_max_backfills = undef, $osd_recovery_max_active = undef, $osd_recovery_op_priority = undef, $osd_recovery_max_single_start = undef, $osd_max_scrubs = undef, $osd_op_threads = undef, $pid_max = undef, $rgw_keystone_version = 'v2.0', $rgw_keystone_admin_domain = undef, $rgw_keystone_admin_project = undef, $rgw_keystone_admin_user = undef, $rgw_keystone_admin_password = undef, $rbd_mirror_client_name = undef, $fs_metadata_pool = undef, $fs_data_pool = undef, $fs_name = undef, $rbd_default_features = undef, ) { validate_legacy(Hash, 'validate_hash', $client_keys) if $authentication_type == 'cephx' and empty($client_keys) { fail("client_keys must be provided when using authentication_type = 'cephx'") } } diff --git a/manifests/repo.pp b/manifests/repo.pp index c328b20..e7d2a3e 100644 --- a/manifests/repo.pp +++ b/manifests/repo.pp @@ -1,232 +1,232 @@ # Copyright (C) 2013, 2014 iWeb Technologies Inc. # Copyright (C) 2013 Cloudwatt # Copyright (C) 2014 Nine Internet Solutions AG # Copyright (C) 2014 Catalyst IT Limited # Copyright (C) 2015 Red Hat # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Author: Loic Dachary # Author: Francois Charlier # Author: David Moreau Simard # Author: Andrew Woodward # Author: David Gurtner # Author: Ricardo Rocha # Author: Emilien Macchi # # == Class: ceph::repo # # Configure ceph APT repo for Ceph # # === Parameters: # # [*ensure*] The ensure state for package ressources. # Optional. Defaults to 'present'. # # [*release*] The name of the Ceph release to install -# Optional. Default to 'mimic' in ceph::params. +# Optional. Default to 'nautilus' in ceph::params. # # [*fastcgi*] Install Ceph fastcgi apache module for Ceph # Optional. Defaults to 'false' # # [*proxy*] Proxy URL to be used for the yum repository, useful if you're behind a corporate firewall # Optional. Defaults to 'undef' # # [*proxy_username*] The username to be used for the proxy if one should be required # Optional. Defaults to 'undef' # # [*proxy_password*] The password to be used for the proxy if one should be required # Optional. Defaults to 'undef' # # [*enable_epel*] Whether or not enable EPEL repository. # Optional. Defaults to True # # [*enable_sig*] Whether or not enable SIG repository. # CentOS SIG repository contains Ceph packages built by CentOS community. # https://wiki.centos.org/SpecialInterestGroup/Storage/ # Optional. Defaults to False in ceph::params. # # [*ceph_mirror*] Ceph mirror used to download packages. # Optional. Defaults to undef. # class ceph::repo ( $ensure = present, $release = $::ceph::params::release, $fastcgi = false, $proxy = undef, $proxy_username = undef, $proxy_password = undef, $enable_epel = true, $enable_sig = $::ceph::params::enable_sig, $ceph_mirror = undef, ) inherits ceph::params { case $::osfamily { 'Debian': { include ::apt if $ceph_mirror { $ceph_mirror_real = $ceph_mirror } else { $ceph_mirror_real = "http://download.ceph.com/debian-${release}/" apt::key { 'ceph': ensure => $ensure, id => '08B73419AC32B4E966C1A330E84AC2C0460F3994', source => 'https://download.ceph.com/keys/release.asc', before => Apt::Source['ceph'], } } apt::source { 'ceph': ensure => $ensure, location => $ceph_mirror_real, release => $::lsbdistcodename, tag => 'ceph', } if $fastcgi { apt::key { 'ceph-gitbuilder': ensure => $ensure, id => 'FCC5CB2ED8E6F6FB79D5B3316EAEAE2203C3951A', server => 'keyserver.ubuntu.com', } apt::source { 'ceph-fastcgi': ensure => $ensure, location => "http://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-${::lsbdistcodename}-${::hardwaremodel}-basic/ref/master", release => $::lsbdistcodename, require => Apt::Key['ceph-gitbuilder'], } } Apt::Source<| tag == 'ceph' |> -> Package<| tag == 'ceph' |> Exec['apt_update'] -> Package<| tag == 'ceph' |> } 'RedHat': { $enabled = $ensure ? { 'present' => '1', 'absent' => '0', default => absent, } # If you want to deploy Ceph using packages provided by CentOS SIG # https://wiki.centos.org/SpecialInterestGroup/Storage/ if $enable_sig { if $::operatingsystem != 'CentOS' { warning("CentOS SIG repository is only supported on CentOS operating system, \ not on ${::operatingsystem}, which can lead to packaging issues.") } if $ceph_mirror { $ceph_mirror_real = $ceph_mirror } else { $ceph_mirror_real = "https://buildlogs.centos.org/centos/7/storage/x86_64/ceph-${release}/" } yumrepo { 'ceph-luminous-sig': ensure => 'absent', } yumrepo { 'ceph-storage-sig': enabled => '1', baseurl => $ceph_mirror_real, descr => 'Ceph Storage SIG', mirrorlist => 'absent', gpgcheck => '0', } # Make sure we install the repo before any Package resource Yumrepo['ceph-luminous-sig'] -> Yumrepo['ceph-storage-sig'] -> Package<| tag == 'ceph' |> } else { # If you want to deploy Ceph using packages provided by ceph.com repositories. if ((($::operatingsystem == 'RedHat' or $::operatingsystem == 'CentOS') and (versioncmp($::operatingsystemmajrelease, '7') < 0)) or ($::operatingsystem == 'Fedora' and (versioncmp($::operatingsystemmajrelease, '19') < 0))) { $el = '6' } else { $el = '7' } Yumrepo { proxy => $proxy, proxy_username => $proxy_username, proxy_password => $proxy_password, } if ($::operatingsystem != 'Fedora') { yumrepo { 'ext-ceph': # puppet versions prior to 3.5 do not support ensure, use enabled instead enabled => $enabled, descr => "External Ceph ${release}", name => "ext-ceph-${release}", baseurl => "http://download.ceph.com/rpm-${release}/el${el}/\$basearch", gpgcheck => '1', gpgkey => 'https://download.ceph.com/keys/release.asc', mirrorlist => absent, priority => '10', # prefer ceph repos over EPEL tag => 'ceph', } yumrepo { 'ext-ceph-noarch': # puppet versions prior to 3.5 do not support ensure, use enabled instead enabled => $enabled, descr => 'External Ceph noarch', name => "ext-ceph-${release}-noarch", baseurl => "http://download.ceph.com/rpm-${release}/el${el}/noarch", gpgcheck => '1', gpgkey => 'https://download.ceph.com/keys/release.asc', mirrorlist => absent, priority => '10', # prefer ceph repos over EPEL tag => 'ceph', } if $fastcgi { yumrepo { 'ext-ceph-fastcgi': enabled => $enabled, descr => 'FastCGI basearch packages for Ceph', name => 'ext-ceph-fastcgi', baseurl => "http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel${el}-x86_64-basic/ref/master", gpgcheck => '1', gpgkey => 'https://download.ceph.com/keys/autobuild.asc', mirrorlist => absent, priority => '20', # prefer ceph repos over EPEL tag => 'ceph', } } } # prefer ceph.com repos over EPEL package { 'yum-plugin-priorities': ensure => present, } } if $enable_epel and ($::operatingsystem != 'Fedora') { yumrepo { "ext-epel-${el}": # puppet versions prior to 3.5 do not support ensure, use enabled instead enabled => $enabled, descr => "External EPEL ${el}", name => "ext-epel-${el}", baseurl => absent, gpgcheck => '1', gpgkey => "https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-${el}", mirrorlist => "http://mirrors.fedoraproject.org/metalink?repo=epel-${el}&arch=\$basearch", priority => '20', # prefer ceph repos over EPEL tag => 'ceph', exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', } } Yumrepo<| tag == 'ceph' |> -> Package<| tag == 'ceph' |> } default: { fail("Unsupported osfamily: ${::osfamily} operatingsystem: ${::operatingsystem}, \ module ${module_name} only supports osfamily Debian and RedHat") } } } diff --git a/spec/classes/ceph_repo_spec.rb b/spec/classes/ceph_repo_spec.rb index 7ad820c..170e7c9 100644 --- a/spec/classes/ceph_repo_spec.rb +++ b/spec/classes/ceph_repo_spec.rb @@ -1,653 +1,653 @@ # -*- coding: utf-8 -*- # Copyright (C) iWeb Technologies Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # Author: Francois Charlier # Author: David Moreau Simard # Author: Andrew Woodward require 'spec_helper' describe 'ceph::repo' do shared_examples 'ceph::repo on Debian' do before do facts.merge!( :osfamily => 'Debian', :lsbdistid => 'Debian', :lsbdistcodename => 'jessie', :lsbdistrelease => '8' ) end context 'with default params' do it { should contain_apt__key('ceph').with( :id => '08B73419AC32B4E966C1A330E84AC2C0460F3994', :source => 'https://download.ceph.com/keys/release.asc', :before => 'Apt::Source[ceph]', )} it { should contain_apt__source('ceph').with( - :location => 'http://download.ceph.com/debian-mimic/', + :location => 'http://download.ceph.com/debian-nautilus/', :release => 'jessie', )} end context 'when overriding ceph mirror' do let :params do { - :ceph_mirror => 'http://myserver.com/debian-mimic/' + :ceph_mirror => 'http://myserver.com/debian-nautilus/' } end it { should contain_apt__source('ceph').with( - :location => 'http://myserver.com/debian-mimic/', + :location => 'http://myserver.com/debian-nautilus/', :release => 'jessie', )} end context 'when overriding ceph release' do let :params do { :release => 'firefly' } end it { should contain_apt__source('ceph').with( :location => 'http://download.ceph.com/debian-firefly/', :release => 'jessie', )} end end shared_examples 'ceph::repo on Ubuntu' do before do facts.merge!( :osfamily => 'Debian', :lsbdistid => 'Ubuntu', :lsbdistcodename => 'trusty', :lsbdistrelease => '14.04', :hardwaremodel => 'x86_64' ) end context 'with default params' do it { should contain_apt__key('ceph').with( :id => '08B73419AC32B4E966C1A330E84AC2C0460F3994', :source => 'https://download.ceph.com/keys/release.asc', :before => 'Apt::Source[ceph]', )} it { should contain_apt__source('ceph').with( - :location => 'http://download.ceph.com/debian-mimic/', + :location => 'http://download.ceph.com/debian-nautilus/', :release => 'trusty', )} end context 'when overriding ceph release' do let :params do { :release => 'firefly' } end it { should contain_apt__source('ceph').with( :location => 'http://download.ceph.com/debian-firefly/', :release => 'trusty', )} end context 'when wanting fast-cgi' do let :params do { :fastcgi => true } end it { should contain_apt__key('ceph-gitbuilder').with( :id => 'FCC5CB2ED8E6F6FB79D5B3316EAEAE2203C3951A', :server => 'keyserver.ubuntu.com', )} it { should contain_apt__source('ceph').with( - :location => 'http://download.ceph.com/debian-mimic/', + :location => 'http://download.ceph.com/debian-nautilus/', :release => 'trusty', )} it { should contain_apt__source('ceph-fastcgi').with( :ensure => 'present', :location => 'http://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-trusty-x86_64-basic/ref/master', :release => 'trusty', :require => 'Apt::Key[ceph-gitbuilder]' )} end context 'with ensure => absent to disable' do let :params do { :ensure => 'absent', :fastcgi => true } end it { should contain_apt__source('ceph').with( :ensure => 'absent', - :location => 'http://download.ceph.com/debian-mimic/', + :location => 'http://download.ceph.com/debian-nautilus/', :release => 'trusty', )} it { should contain_apt__source('ceph-fastcgi').with( :ensure => 'absent', :location => 'http://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-trusty-x86_64-basic/ref/master', :release => 'trusty', :require => 'Apt::Key[ceph-gitbuilder]' )} end end shared_examples 'ceph::repo on RHEL' do before do facts.merge!( :osfamily => 'RedHat', :operatingsystem => 'RedHat', :operatingsystemmajrelease => '7' ) end context 'with default params' do it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} end context 'when overriding ceph release' do let :params do { :release => 'firefly' } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', :descr => 'External Ceph firefly', :name => 'ext-ceph-firefly', :baseurl => 'http://download.ceph.com/rpm-firefly/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', :name => 'ext-ceph-firefly-noarch', :baseurl => 'http://download.ceph.com/rpm-firefly/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} end context 'when disabling EPEL' do let :params do { :enable_epel => false, } end it { should_not contain_yumrepo('ext-epel-7') } end context 'when using a proxy for yum repositories' do let :params do { :proxy => 'http://someproxy.com:8080/', :proxy_username => 'proxyuser', :proxy_password => 'proxypassword' } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', :proxy => 'http://someproxy.com:8080/', :proxy_username => 'proxyuser', :proxy_password => 'proxypassword', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10', :proxy => 'http://someproxy.com:8080/', :proxy_username => 'proxyuser', :proxy_password => 'proxypassword', )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10', :proxy => 'http://someproxy.com:8080/', :proxy_username => 'proxyuser', :proxy_password => 'proxypassword', )} end context 'with ensure => absent to disable' do let :params do { :ensure => 'absent', :fastcgi => true } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '0', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '0', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '0', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-fastcgi').with( :enabled => '0', :descr => 'FastCGI basearch packages for Ceph', :name => 'ext-ceph-fastcgi', :baseurl => 'http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel7-x86_64-basic/ref/master', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/autobuild.asc', :mirrorlist => 'absent', :priority => '20' )} end context 'with ceph fast-cgi' do let :params do { :fastcgi => true } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-fastcgi').with( :enabled => '1', :descr => 'FastCGI basearch packages for Ceph', :name => 'ext-ceph-fastcgi', :baseurl => 'http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel7-x86_64-basic/ref/master', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/autobuild.asc', :mirrorlist => 'absent', :priority => '20' )} end end shared_examples 'ceph::repo on CentOS' do before do facts.merge!( :osfamily => 'RedHat', :operatingsystem => 'CentOS', :operatingsystemmajrelease => '7' ) end context 'with default params' do it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} end context 'when overriding ceph release' do let :params do { :release => 'firefly' } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', :descr => 'External Ceph firefly', :name => 'ext-ceph-firefly', :baseurl => 'http://download.ceph.com/rpm-firefly/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', :name => 'ext-ceph-firefly-noarch', :baseurl => 'http://download.ceph.com/rpm-firefly/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} end context 'when using CentOS SIG repository' do let :params do { :enable_sig => true, } end it { should_not contain_yumrepo('ext-epel-7') } it { should_not contain_yumrepo('ext-ceph') } it { should_not contain_yumrepo('ext-ceph-noarch') } it { should contain_yumrepo('ceph-luminous-sig').with_ensure('absent') } it { should contain_yumrepo('ceph-storage-sig').with( - :baseurl => 'https://buildlogs.centos.org/centos/7/storage/x86_64/ceph-mimic/', + :baseurl => 'https://buildlogs.centos.org/centos/7/storage/x86_64/ceph-nautilus/', )} end context 'when using CentOS SIG repository from a mirror' do let :params do { :enable_sig => true, :ceph_mirror => 'https://mymirror/luminous/', } end it { should_not contain_yumrepo('ext-epel-7') } it { should_not contain_yumrepo('ext-ceph') } it { should_not contain_yumrepo('ext-ceph-noarch') } it { should contain_yumrepo('ceph-luminous-sig').with_ensure('absent') } it { should contain_yumrepo('ceph-storage-sig').with( :baseurl => 'https://mymirror/luminous/', )} end context 'with ensure => absent to disable' do let :params do { :ensure => 'absent', :fastcgi => true } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '0', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '0', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '0', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-fastcgi').with( :enabled => '0', :descr => 'FastCGI basearch packages for Ceph', :name => 'ext-ceph-fastcgi', :baseurl => 'http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel7-x86_64-basic/ref/master', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/autobuild.asc', :mirrorlist => 'absent', :priority => '20' )} end context 'with ceph fast-cgi' do let :params do { :fastcgi => true } end it { should contain_yumrepo('ext-epel-7').with( :enabled => '1', :descr => 'External EPEL 7', :name => 'ext-epel-7', :baseurl => 'absent', :gpgcheck => '1', :gpgkey => 'https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-7', :mirrorlist => 'http://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch', :priority => '20', :exclude => 'python-ceph-compat python-rbd python-rados python-cephfs', )} it { should contain_yumrepo('ext-ceph').with( :enabled => '1', - :descr => 'External Ceph mimic', - :name => 'ext-ceph-mimic', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/$basearch', + :descr => 'External Ceph nautilus', + :name => 'ext-ceph-nautilus', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/$basearch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-noarch').with( :enabled => '1', :descr => 'External Ceph noarch', - :name => 'ext-ceph-mimic-noarch', - :baseurl => 'http://download.ceph.com/rpm-mimic/el7/noarch', + :name => 'ext-ceph-nautilus-noarch', + :baseurl => 'http://download.ceph.com/rpm-nautilus/el7/noarch', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/release.asc', :mirrorlist => 'absent', :priority => '10' )} it { should contain_yumrepo('ext-ceph-fastcgi').with( :enabled => '1', :descr => 'FastCGI basearch packages for Ceph', :name => 'ext-ceph-fastcgi', :baseurl => 'http://gitbuilder.ceph.com/mod_fastcgi-rpm-rhel7-x86_64-basic/ref/master', :gpgcheck => '1', :gpgkey => 'https://download.ceph.com/keys/autobuild.asc', :mirrorlist => 'absent', :priority => '20' )} end end on_supported_os({ :supported_os => OSDefaults.get_supported_os }).each do |os,facts| context "on #{os}" do let (:facts) do facts.merge!(OSDefaults.get_facts()) end it_behaves_like "ceph::repo on #{facts[:operatingsystem]}" if facts[:operatingsystem] == 'CentOS' it_behaves_like 'ceph::repo on RHEL' end end end end diff --git a/spec/fixtures/hieradata/common.yaml b/spec/fixtures/hieradata/common.yaml index e8d85be..270e3af 100644 --- a/spec/fixtures/hieradata/common.yaml +++ b/spec/fixtures/hieradata/common.yaml @@ -1,60 +1,60 @@ --- ######## Ceph -ceph::profile::params::release: 'mimic' +ceph::profile::params::release: 'nautilus' ######## Ceph.conf ceph::profile::params::fsid: '4b5c8c0a-ff60-454b-a1b4-9747aa737d19' ceph::profile::params::authentication_type: 'cephx' ceph::profile::params::mon_initial_members: 'first, second' ceph::profile::params::mon_host: '10.11.12.2:6789, 10.11.12.3:6789' ceph::profile::params::osd_journal_size: '4096' ceph::profile::params::osd_max_object_name_len: '256' ceph::profile::params::osd_max_object_namespace_len: '64' ceph::profile::params::osd_pool_default_pg_num: '200' ceph::profile::params::osd_pool_default_pgp_num: '200' ceph::profile::params::osd_pool_default_size: '2' ceph::profile::params::osd_pool_default_min_size: '1' ceph::profile::params::cluster_network: '10.12.13.0/24' ceph::profile::params::public_network: '10.11.12.0/24' ceph::profile::params::public_addr: '10.11.12.2' ceph::profile::params::osd_max_backfills: '1' ceph::profile::params::osd_recovery_max_active: '1' ceph::profile::params::osd_recovery_op_priority: '1' ceph::profile::params::osd_recovery_max_single_start: '1' ceph::profile::params::osd_max_scrubs: '1' ceph::profile::params::osd_op_threads: '2' ceph::profile::params::fs_name: 'fs_name' ceph::profile::params::fs_metadata_pool: 'metadata_pool' ceph::profile::params::fs_data_pool: 'data_pool' ######## Keys ceph::profile::params::mds_key: 'AQDLOh1VgEp6FRAAFzT7Zw+Y9V6JJExQAsRnRQ==' ceph::profile::params::mon_key: 'AQATGHJTUCBqIBAA7M2yafV1xctn1pgr3GcKPg==' ceph::profile::params::mgr_key: 'AQASGFDFUHBHDG9SDdsyffV1xgsn1pgr3GcKPg==' ceph::profile::params::client_keys: 'client.admin': secret: 'AQBMGHJTkC8HKhAAJ7NH255wYypgm1oVuV41MA==' mode: '0600' cap_mon: 'allow *' cap_osd: 'allow *' cap_mds: 'allow *' 'client.bootstrap-osd': secret: 'AQARG3JTsDDEHhAAVinHPiqvJkUi5Mww/URupw==' keyring_path: '/var/lib/ceph/bootstrap-osd/ceph.keyring' cap_mon: 'allow profile bootstrap-osd' 'client.bootstrap-mds': secret: 'AQCztJdSyNb0NBAASA2yPZPuwXeIQnDJ9O8gVw==' keyring_path: '/var/lib/ceph/bootstrap-mds/ceph.keyring' cap_mon: 'allow profile bootstrap-mds' 'client.volumes': secret: 'AQA4MPZTOGU0ARAAXH9a0fXxVq0X25n2yPREDw==' mode: '0644' user: 'root' group: 'root' cap_mon: 'allow r' cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=volumes' ceph::profile::params::osds: '/dev/sdc': journal: '/dev/sdb' '/dev/sdd': journal: '/dev/sdb'