37f7f27145
... instead of creating all regardless of the enabled services and backends. Change-Id: Ifbb90e5ab70428c651b317fd0fbb5f67a1cd97b8
191 lines
6.4 KiB
Puppet
191 lines
6.4 KiB
Puppet
# Configure the Ceph services
|
|
#
|
|
# [*deploy_rgw*]
|
|
# (optional) Setting flag to enable the deployment of Ceph RadosGW and
|
|
# configure various services to use Swift provided by RGW as a backend.
|
|
# Defaults to false
|
|
#
|
|
# [*pg_num*]
|
|
# (optional) Number of PGs per pool.
|
|
# Defaults to 16.
|
|
#
|
|
# [*create_cephfs*]
|
|
# (optional) Flag if CephFS will be created.
|
|
# Defaults to false
|
|
#
|
|
# [*ceph_pools*]
|
|
# (optional) Ceph pools
|
|
# Defaults to ['glance', 'nova']
|
|
#
|
|
class openstack_integration::ceph (
|
|
$deploy_rgw = false,
|
|
$pg_num = 16,
|
|
$create_cephfs = false,
|
|
$ceph_pools = ['glance', 'nova']
|
|
) {
|
|
|
|
include openstack_integration::config
|
|
|
|
if $::openstack_integration::config::ipv6 {
|
|
$ms_bind_ipv4 = false
|
|
$ms_bind_ipv6 = true
|
|
} else {
|
|
$ms_bind_ipv4 = true
|
|
$ms_bind_ipv6 = false
|
|
}
|
|
|
|
ensure_packages(['lvm2'], {'ensure' => 'present', before => Exec['lvm_create']})
|
|
|
|
exec { 'lvm_create':
|
|
command => "/bin/true # comment to satisfy puppet syntax requirements
|
|
truncate --size=10G /diskimage.img
|
|
losetup /dev/loop0 /diskimage.img
|
|
pvcreate /dev/loop0
|
|
vgcreate ceph_vg /dev/loop0
|
|
sleep 5
|
|
lvcreate -n lv_data -a y -l 100%FREE ceph_vg
|
|
",
|
|
unless => "/bin/true # comment to satisfy puppet syntax requirements
|
|
set -ex
|
|
test -b /dev/ceph_vg/lv_data
|
|
",
|
|
logoutput => true,
|
|
}
|
|
|
|
Exec['lvm_create'] -> Class['Ceph::Osds']
|
|
|
|
class { 'ceph::params':
|
|
# Since Quincy, the ceph-volume command is provided by the separate package
|
|
packages => ['ceph', 'ceph-volume']
|
|
}
|
|
|
|
$rgw_frontends = $::openstack_integration::config::ssl ? {
|
|
true => [
|
|
'beast',
|
|
"ssl_endpoint=${::openstack_integration::config::ip_for_url}:8080",
|
|
"ssl_private_key=/etc/ceph/ssl/private/${facts['networking']['fqdn']}.pem",
|
|
"ssl_certificate=${::openstack_integration::params::cert_path}"
|
|
],
|
|
default => [
|
|
'beast',
|
|
"endpoint=${::openstack_integration::config::ip_for_url}:8080"
|
|
]
|
|
}
|
|
|
|
class { 'ceph::profile::params':
|
|
fsid => '7200aea0-2ddd-4a32-aa2a-d49f66ab554c',
|
|
manage_repo => false, # repo already managed in openstack_integration::repo
|
|
ms_bind_ipv4 => $ms_bind_ipv4,
|
|
ms_bind_ipv6 => $ms_bind_ipv6,
|
|
authentication_type => 'cephx',
|
|
mon_host => $::openstack_integration::config::ip_for_url,
|
|
mon_initial_members => $facts['networking']['hostname'],
|
|
osd_pool_default_size => '1',
|
|
osd_pool_default_min_size => '1',
|
|
mon_key => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
mgr_key => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
mds_key => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
osd_max_object_name_len => 256,
|
|
osd_max_object_namespace_len => 64,
|
|
client_keys => {
|
|
'client.admin' => {
|
|
'secret' => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
'mode' => '0600',
|
|
'cap_mon' => 'allow *',
|
|
'cap_osd' => 'allow *',
|
|
'cap_mds' => 'allow *',
|
|
},
|
|
'client.bootstrap-osd' => {
|
|
'secret' => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
'keyring_path' => '/var/lib/ceph/bootstrap-osd/ceph.keyring',
|
|
'cap_mon' => 'allow profile bootstrap-osd',
|
|
},
|
|
'client.openstack' => {
|
|
'secret' => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
'mode' => '0644',
|
|
'cap_mon' => 'profile rbd',
|
|
'cap_osd' => 'profile rbd pool=cinder, profile rbd pool=nova, profile rbd pool=glance, profile rbd pool=gnocchi, profile rbd pool=backups',
|
|
},
|
|
'client.manila' => {
|
|
'secret' => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
'mode' => '0644',
|
|
'cap_mgr' => 'allow rw',
|
|
'cap_mon' => 'allow r',
|
|
},
|
|
'client.radosgw.gateway' => {
|
|
'user' => 'ceph',
|
|
'secret' => 'AQD7kyJQQGoOBhAAqrPAqSopSwPrrfMMomzVdw==',
|
|
'cap_mon' => 'allow rwx',
|
|
'cap_osd' => 'allow rwx',
|
|
'inject' => true,
|
|
}
|
|
},
|
|
osds => {
|
|
'ceph_vg/lv_data' => {},
|
|
},
|
|
# Configure Ceph RadosGW
|
|
# These could be always set in the above call to ceph::profile::params
|
|
frontend_type => 'beast',
|
|
rgw_frontends => join($rgw_frontends, ' '),
|
|
rgw_user => 'ceph',
|
|
rgw_keystone_integration => true,
|
|
rgw_keystone_url => $::openstack_integration::config::keystone_admin_uri,
|
|
rgw_keystone_admin_domain => 'Default',
|
|
rgw_keystone_admin_user => 'rgwuser',
|
|
rgw_keystone_admin_password => 'secret',
|
|
rgw_keystone_admin_project => 'services',
|
|
rgw_swift_url => "${::openstack_integration::config::base_url}:8080",
|
|
rgw_swift_public_url => "${::openstack_integration::config::base_url}:8080/swift/v1",
|
|
rgw_swift_admin_url => "${::openstack_integration::config::base_url}:8080/swift/v1",
|
|
rgw_swift_internal_url => "${::openstack_integration::config::base_url}:8080/swift/v1",
|
|
rbd_default_features => '15',
|
|
}
|
|
|
|
ceph::pool { $ceph_pools:
|
|
pg_num => $pg_num,
|
|
}
|
|
|
|
class { 'ceph::profile::mgr': }
|
|
class { 'ceph::profile::mon': }
|
|
class { 'ceph::profile::osd': }
|
|
|
|
if $create_cephfs {
|
|
ceph::pool { ['cephfs_data', 'cephfs_metadata']:
|
|
pg_num => $pg_num,
|
|
}
|
|
-> ceph::fs { 'cephfs':
|
|
metadata_pool => 'cephfs_metadata',
|
|
data_pool => 'cephfs_data',
|
|
}
|
|
~> exec { 'enable cephfs snapshot':
|
|
command => 'ceph fs set cephfs allow_new_snaps true',
|
|
path => ['/bin', '/usr/bin'],
|
|
refreshonly => true,
|
|
tag => 'create-cephfs',
|
|
}
|
|
class { 'ceph::profile::mds': }
|
|
}
|
|
|
|
# Extra Ceph configuration to increase performances
|
|
$ceph_extra_config = {
|
|
'global/osd_journal_size' => { value => '100' },
|
|
}
|
|
|
|
class { 'ceph::conf':
|
|
args => $ceph_extra_config,
|
|
}
|
|
|
|
if $deploy_rgw {
|
|
if $::openstack_integration::config::ssl {
|
|
openstack_integration::ssl_key { 'ceph':
|
|
require => Package['ceph'],
|
|
}
|
|
Openstack_integration::Ssl_key['ceph'] ~> Service<| tag == 'ceph-radosgw' |>
|
|
Exec['update-ca-certificates'] ~> Service<| tag == 'ceph-radosgw' |>
|
|
}
|
|
|
|
class { 'ceph::profile::rgw': }
|
|
Service<| tag == 'ceph-radosgw' |> -> Service <| tag == 'glance-service' |>
|
|
}
|
|
}
|