fuel-library/deployment/puppet/osnailyfacter/manifests/ceph/mon.pp

143 lines
5.3 KiB
Puppet

class osnailyfacter::ceph::mon {
notice('MODULAR: ceph/mon.pp')
$storage_hash = hiera('storage', {})
$admin_key = $storage_hash['admin_key']
$mon_key = $storage_hash['mon_key']
$bootstrap_osd_key = $storage_hash['bootstrap_osd_key']
$fsid = $storage_hash['fsid']
$osd_pool_default_size = $storage_hash['osd_pool_size']
$osd_pool_default_pg_num = $storage_hash['pg_num']
$osd_pool_default_pgp_num = $storage_hash['pg_num']
$osd_pool_default_min_size = pick($storage_hash['osd_pool_default_min_size'], '1')
$osd_journal_size = pick($storage_hash['osd_journal_size'], '2048')
$filestore_xattr_use_omap = pick($storage_hash['filestore_xattr_use_omap'], true)
$osd_recovery_max_active = pick($storage_hash['osd_recovery_max_active'], '1')
$osd_max_backfills = pick($storage_hash['osd_max_backfills'], '1')
$rbd_cache_writethrough_until_flush = pick($storage_hash['rbd_cache_writethrough_until_flush'], true)
$rbd_cache = pick($storage_hash['rbd_cache'], true)
$log_to_syslog = hiera('use_syslog', true)
$log_to_syslog_level = pick($storage_hash['ceph_syslog_level'], 'info')
$log_to_syslog_facility = pick($storage_hash['ceph_syslog_facility'], 'LOG_LOCAL0')
$mon_address_map = get_node_to_ipaddr_map_by_network_role(hiera_hash('ceph_monitor_nodes'), 'ceph/public')
$primary_mon = get_node_to_ipaddr_map_by_network_role(hiera_hash('ceph_primary_monitor_node'), 'ceph/public')
$mon_ips = join(sorted_hosts($mon_address_map, 'ip'), ',')
$mon_hosts = join(sorted_hosts($mon_address_map, 'host'), ',')
$primary_mon_ip = join(sorted_hosts($primary_mon, 'ip'), ',')
$primary_mon_hostname = join(sorted_hosts($primary_mon, 'host'), ',')
prepare_network_config(hiera_hash('network_scheme'))
$ceph_cluster_network = get_network_role_property('ceph/replication', 'network')
$ceph_public_network = get_network_role_property('ceph/public', 'network')
if $primary_mon_hostname == $::hostname {
$mon_initial_members = $primary_mon_hostname
$mon_host = $primary_mon_ip
} else {
$mon_initial_members = $mon_hosts
$mon_host = $mon_ips
}
if ($storage_hash['volumes_ceph'] or
$storage_hash['images_ceph'] or
$storage_hash['objects_ceph'] or
$storage_hash['ephemeral_ceph']
) {
if empty($admin_key) {
fail('Please provide admin_key')
}
if empty($mon_key) {
fail('Please provide mon_key')
}
if empty($fsid) {
fail('Please provide fsid')
}
if empty($bootstrap_osd_key) {
fail('Please provide bootstrap_osd_key')
}
class { '::ceph':
fsid => $fsid,
mon_initial_members => $mon_initial_members,
mon_host => $mon_host,
cluster_network => $ceph_cluster_network,
public_network => $ceph_public_network,
osd_pool_default_size => $osd_pool_default_size,
osd_pool_default_pg_num => $osd_pool_default_pg_num,
osd_pool_default_pgp_num => $osd_pool_default_pgp_num,
osd_pool_default_min_size => $osd_pool_default_min_size,
osd_journal_size => $osd_journal_size,
}
ceph_config {
'global/filestore_xattr_use_omap' : value => $filestore_xattr_use_omap;
'global/osd_recovery_max_active' : value => $osd_recovery_max_active;
'global/osd_max_backfills' : value => $osd_max_backfills;
'client/rbd_cache_writethrough_until_flush' : value => $rbd_cache_writethrough_until_flush;
'client/rbd_cache' : value => $rbd_cache;
'global/log_to_syslog' : value => $log_to_syslog;
'global/log_to_syslog_level' : value => $log_to_syslog_level;
'global/log_to_syslog_facility' : value => $log_to_syslog_facility;
}
Ceph::Key {
inject => true,
inject_as_id => 'mon.',
inject_keyring => "/var/lib/ceph/mon/ceph-${::hostname}/keyring",
}
ceph::key { 'client.admin':
secret => $admin_key,
cap_mon => 'allow *',
cap_osd => 'allow *',
cap_mds => 'allow',
}
ceph::key { 'client.bootstrap-osd':
secret => $bootstrap_osd_key,
cap_mon => 'allow profile bootstrap-osd',
}
ceph::mon { $::hostname:
key => $mon_key,
}
if ($storage_hash['volumes_ceph']) {
include ::cinder::params
service { 'cinder-volume':
ensure => 'running',
name => $::cinder::params::volume_service,
hasstatus => true,
hasrestart => true,
}
service { 'cinder-backup':
ensure => 'running',
name => $::cinder::params::backup_service,
hasstatus => true,
hasrestart => true,
}
Class['ceph'] ~> Service['cinder-volume']
Class['ceph'] ~> Service['cinder-backup']
}
if ($storage_hash['images_ceph']) {
include ::glance::params
service { 'glance-api':
ensure => 'running',
name => $::glance::params::api_service_name,
hasstatus => true,
hasrestart => true,
}
Class['ceph'] ~> Service['glance-api']
}
}
}