# profiles::ceph::client class profiles::ceph::client ( String $fsid, Array[Stdlib::Host] $mons, # cluster topology (single source of truth: hieradata/common.yaml) Array[Stdlib::Host] $cluster_public_ips, Array[Stdlib::Host] $mon_initial_members, Stdlib::Absolutepath $config_file = '/etc/ceph/ceph.conf', Boolean $manage_ceph_conf = true, Boolean $manage_ceph_package = true, Boolean $manage_ceph_paths = true, String $owner = 'ceph', String $group = 'ceph', Stdlib::Filemode $mode = '0644', Hash $keyrings = {}, # [global] tunables (defaults match the live hand-maintained ceph.conf) String $auth_client_required = 'cephx', String $auth_cluster_required = 'cephx', String $auth_service_required = 'cephx', Boolean $mon_allow_pool_delete = true, Boolean $ms_bind_ipv4 = true, Boolean $ms_bind_ipv6 = false, Integer $osd_crush_chooseleaf_type = 1, Integer $osd_pool_default_min_size = 2, Integer $osd_pool_default_size = 3, Integer $osd_pool_default_pg_num = 128, # mds config sections; only rendered on mon/mgr/mds hosts (render_mds_config) Boolean $render_mds_config = false, Hash[String, Integer] $mds_instances = {}, Hash $mds_common = { 'keyring' => '/var/lib/ceph/mds/ceph-$id/keyring', 'mds_standby_replay' => true, }, ) { # dont run this on proxmox nodes if $facts['enc_role'] != 'roles::infra::proxmox::node' { # install the ceph client package if $manage_ceph_package { package { 'ceph-common': ensure => installed, } } # only depend on the package when this class manages it; on the ceph # hosts the package is delivered by cephadm / profiles::packages instead. $config_require = $manage_ceph_package ? { true => Package['ceph-common'], default => undef, } # manage the ceph directory if $manage_ceph_paths { file { '/etc/ceph': ensure => directory, owner => $owner, group => $group, mode => $mode, require => $config_require, } } # render /etc/ceph/ceph.conf from cluster topology in hiera if $manage_ceph_conf { file { $config_file: ensure => file, owner => $owner, group => $group, mode => $mode, content => template('profiles/ceph/client.conf.erb'), require => $config_require, } } # manage ceph keyrings create_resources('profiles::ceph::keyring', $keyrings) } }