Switch Ceph Monitor/OSD/Client/External to composable roles
Change-Id: I1921115cb6218c7554348636c404245c79937673 Depends-On: I7ac096feb9f5655003becd79d2eea355a047c90b Depends-On: I871ef420700e6d0ee5c1e444e019d58b3a9a45a6
This commit is contained in:
parent
cbb6ae4e7b
commit
794fece5cc
@ -1,6 +1,11 @@
|
||||
# A Heat environment file which can be used to enable a Ceph
|
||||
# storage cluster using the controller and ceph nodes.
|
||||
# Rbd backends are enabled for Cinder, Glance, Gnocchi and Nova.
|
||||
resource_registry:
|
||||
OS::TripleO::Services::CephMon: ../puppet/services/ceph-mon.yaml
|
||||
OS::TripleO::Services::CephOSD: ../puppet/services/ceph-osd.yaml
|
||||
OS::TripleO::Services::CephClient: ../puppet/services/ceph-client.yaml
|
||||
|
||||
parameter_defaults:
|
||||
#NOTE: These ID's and keys should be regenerated for
|
||||
# a production deployment. What is here is suitable for
|
||||
@ -13,4 +18,3 @@ parameter_defaults:
|
||||
GlanceBackend: rbd
|
||||
GnocchiBackend: rbd
|
||||
CinderEnableIscsiBackend: false
|
||||
ControllerEnableCephStorage: true
|
||||
|
@ -1,7 +1,7 @@
|
||||
# A Heat environment file which can be used to enable the
|
||||
# use of an externally managed Ceph cluster.
|
||||
resource_registry:
|
||||
OS::TripleO::CephClusterConfig::SoftwareConfig: ../puppet/extraconfig/ceph/ceph-external-config.yaml
|
||||
OS::TripleO::Services::CephExternal: ../puppet/services/ceph-external.yaml
|
||||
|
||||
parameter_defaults:
|
||||
# NOTE: These example parameters are required when using Ceph External
|
||||
|
@ -1,6 +1,11 @@
|
||||
## A Heat environment file which can be used to set up storage
|
||||
## backends. Defaults to Ceph used as a backend for Cinder, Glance and
|
||||
## Nova ephemeral storage.
|
||||
resource_registry:
|
||||
OS::TripleO::Services::CephMon: ../puppet/services/ceph-mon.yaml
|
||||
OS::TripleO::Services::CephOSD: ../puppet/services/ceph-osd.yaml
|
||||
OS::TripleO::Services::CephClient: ../puppet/services/ceph-client.yaml
|
||||
|
||||
parameter_defaults:
|
||||
|
||||
#### BACKEND SELECTION ####
|
||||
@ -43,10 +48,6 @@ parameter_defaults:
|
||||
|
||||
#### CEPH SETTINGS ####
|
||||
|
||||
## Whether to deploy Ceph OSDs on the controller nodes. By default
|
||||
## OSDs are deployed on dedicated ceph-storage nodes only.
|
||||
# ControllerEnableCephStorage: false
|
||||
|
||||
## When deploying Ceph Nodes through the oscplugin CLI, the following
|
||||
## parameters are set automatically by the CLI. When deploying via
|
||||
## heat stack-create or ceph on the controller nodes only,
|
||||
|
@ -124,6 +124,10 @@ resource_registry:
|
||||
|
||||
# services
|
||||
OS::TripleO::Services: puppet/services/services.yaml
|
||||
OS::TripleO::Services::CephMon: OS::Heat::None
|
||||
OS::TripleO::Services::CephOSD: OS::Heat::None
|
||||
OS::TripleO::Services::CephClient: OS::Heat::None
|
||||
OS::TripleO::Services::CephExternal: OS::Heat::None
|
||||
OS::TripleO::Services::CinderApi: puppet/services/cinder-api.yaml
|
||||
OS::TripleO::Services::CinderScheduler: puppet/services/cinder-scheduler.yaml
|
||||
OS::TripleO::Services::CinderVolume: puppet/services/cinder-volume.yaml
|
||||
|
@ -38,34 +38,10 @@ parameters:
|
||||
type: string
|
||||
constraints:
|
||||
- allowed_values: ['gnocchi', 'database']
|
||||
# This has to be an UUID so for now we generate it outside the template
|
||||
CephClusterFSID:
|
||||
default: ''
|
||||
type: string
|
||||
description: The Ceph cluster FSID. Must be a UUID.
|
||||
CephMonKey:
|
||||
default: ''
|
||||
description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
|
||||
type: string
|
||||
hidden: true
|
||||
CephAdminKey:
|
||||
default: ''
|
||||
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
|
||||
type: string
|
||||
hidden: true
|
||||
CinderEnableNfsBackend:
|
||||
default: false
|
||||
description: Whether to enable or not the NFS backend for Cinder
|
||||
type: boolean
|
||||
CephClientKey:
|
||||
default: ''
|
||||
description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
|
||||
type: string
|
||||
hidden: true
|
||||
CephExternalMonHost:
|
||||
default: ''
|
||||
type: string
|
||||
description: List of externally managed Ceph Mon Host IPs. Only used for external Ceph deployments.
|
||||
CinderEnableRbdBackend:
|
||||
default: false
|
||||
description: Whether to enable or not the Rbd backend for Cinder
|
||||
@ -308,10 +284,6 @@ parameters:
|
||||
default: true
|
||||
description: Whether to use Galera instead of regular MariaDB.
|
||||
type: boolean
|
||||
ControllerEnableCephStorage:
|
||||
default: false
|
||||
description: Whether to deploy Ceph Storage (OSD) on the Controller
|
||||
type: boolean
|
||||
ControllerSchedulerHints:
|
||||
type: json
|
||||
description: Optional scheduler hints to pass to nova
|
||||
@ -527,6 +499,8 @@ parameters:
|
||||
|
||||
ControllerServices:
|
||||
default:
|
||||
- OS::TripleO::Services::CephMon
|
||||
- OS::TripleO::Services::CephExternal
|
||||
- OS::TripleO::Services::CinderApi
|
||||
- OS::TripleO::Services::CinderScheduler
|
||||
- OS::TripleO::Services::CinderVolume
|
||||
@ -566,6 +540,8 @@ parameters:
|
||||
|
||||
ComputeServices:
|
||||
default:
|
||||
- OS::TripleO::Services::CephClient
|
||||
- OS::TripleO::Services::CephExternal
|
||||
- OS::TripleO::Services::Timezone
|
||||
- OS::TripleO::Services::Ntp
|
||||
- OS::TripleO::Services::Snmp
|
||||
@ -670,6 +646,7 @@ parameters:
|
||||
default: {}
|
||||
CephStorageServices:
|
||||
default:
|
||||
- OS::TripleO::Services::CephOSD
|
||||
- OS::TripleO::Services::Ntp
|
||||
- OS::TripleO::Services::Timezone
|
||||
description: A list of service resources (configured in the Heat
|
||||
@ -824,7 +801,6 @@ resources:
|
||||
ManageFirewall: {get_param: ManageFirewall}
|
||||
PurgeFirewallRules: {get_param: PurgeFirewallRules}
|
||||
EnableGalera: {get_param: EnableGalera}
|
||||
EnableCephStorage: {get_param: ControllerEnableCephStorage}
|
||||
ExtraConfig: {get_param: ExtraConfig}
|
||||
FencingConfig: {get_param: FencingConfig}
|
||||
Flavor: {get_param: OvercloudControlFlavor}
|
||||
@ -1105,6 +1081,8 @@ resources:
|
||||
keystone_admin_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, KeystoneAdminApiNetwork]}]}
|
||||
sahara_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SaharaApiNetwork]}]}
|
||||
ironic_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, IronicApiNetwork]}]}
|
||||
ceph_mon_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
|
||||
ceph_mon_node_names: {get_attr: [Controller, hostname]}
|
||||
DeployIdentifier: {get_param: DeployIdentifier}
|
||||
UpdateIdentifier: {get_param: UpdateIdentifier}
|
||||
|
||||
@ -1289,15 +1267,6 @@ resources:
|
||||
|
||||
CephClusterConfig:
|
||||
type: OS::TripleO::CephClusterConfig::SoftwareConfig
|
||||
properties:
|
||||
ceph_storage_count: {get_param: CephStorageCount}
|
||||
ceph_fsid: {get_param: CephClusterFSID}
|
||||
ceph_mon_key: {get_param: CephMonKey}
|
||||
ceph_admin_key: {get_param: CephAdminKey}
|
||||
ceph_client_key: {get_param: CephClientKey}
|
||||
ceph_external_mon_ips: {get_param: CephExternalMonHost}
|
||||
ceph_mon_names: {get_attr: [Controller, hostname]}
|
||||
ceph_mon_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CephPublicNetwork]}]}
|
||||
|
||||
ControllerAllNodesDeployment:
|
||||
type: OS::Heat::StructuredDeployments
|
||||
|
@ -58,7 +58,10 @@ parameters:
|
||||
type: comma_delimited_list
|
||||
ironic_api_node_ips:
|
||||
type: comma_delimited_list
|
||||
|
||||
ceph_mon_node_ips:
|
||||
type: comma_delimited_list
|
||||
ceph_mon_node_names:
|
||||
type: comma_delimited_list
|
||||
DeployIdentifier:
|
||||
type: string
|
||||
description: >
|
||||
@ -305,6 +308,22 @@ resources:
|
||||
- "','"
|
||||
- {get_param: ironic_api_node_ips}
|
||||
|
||||
tripleo::profile::base::ceph::ceph_mon_initial_members:
|
||||
list_join:
|
||||
- ','
|
||||
- {get_param: ceph_mon_node_names}
|
||||
tripleo::profile::base::ceph::ceph_mon_host:
|
||||
list_join:
|
||||
- ','
|
||||
- {get_param: ceph_mon_node_ips}
|
||||
tripleo::profile::base::ceph::ceph_mon_host_v6:
|
||||
str_replace:
|
||||
template: "'[IPS_LIST]'"
|
||||
params:
|
||||
IPS_LIST:
|
||||
list_join:
|
||||
- '],['
|
||||
- {get_param: ceph_mon_node_ips}
|
||||
# NOTE(gfidente): interpolation with %{} in the
|
||||
# hieradata file can't be used as it returns string
|
||||
ceilometer::rabbit_hosts: *rabbit_nodes_array
|
||||
|
@ -2,52 +2,15 @@ heat_template_version: 2015-04-30
|
||||
description: 'Ceph Cluster config data for Puppet'
|
||||
|
||||
parameters:
|
||||
ceph_storage_count:
|
||||
default: 0
|
||||
type: number
|
||||
description: Number of Ceph storage nodes. Used to enable/disable managed Ceph installation.
|
||||
ceph_external_mon_ips:
|
||||
default: ''
|
||||
type: string
|
||||
description: List of external Ceph Mon host IPs.
|
||||
ceph_client_key:
|
||||
default: ''
|
||||
type: string
|
||||
description: Ceph key used to create the client user keyring.
|
||||
ceph_fsid:
|
||||
default: ''
|
||||
type: string
|
||||
ceph_admin_key:
|
||||
default: ''
|
||||
type: string
|
||||
ceph_mon_key:
|
||||
default: ''
|
||||
type: string
|
||||
ceph_mon_names:
|
||||
type: comma_delimited_list
|
||||
ceph_mon_ips:
|
||||
type: comma_delimited_list
|
||||
NovaRbdPoolName:
|
||||
default: vms
|
||||
type: string
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CinderBackupRbdPoolName:
|
||||
default: backups
|
||||
type: string
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
GnocchiRbdPoolName:
|
||||
default: metrics
|
||||
type: string
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
CephIPv6:
|
||||
default: False
|
||||
type: boolean
|
||||
|
||||
resources:
|
||||
CephClusterConfigImpl:
|
||||
@ -59,66 +22,10 @@ resources:
|
||||
datafiles:
|
||||
ceph_cluster:
|
||||
mapped_data:
|
||||
ceph_ipv6: {get_param: CephIPv6}
|
||||
ceph_storage_count: {get_param: ceph_storage_count}
|
||||
ceph_mon_initial_members:
|
||||
list_join:
|
||||
- ','
|
||||
- {get_param: ceph_mon_names}
|
||||
ceph_mon_host:
|
||||
list_join:
|
||||
- ','
|
||||
- {get_param: ceph_mon_ips}
|
||||
ceph_mon_host_v6:
|
||||
str_replace:
|
||||
template: "'[IPS_LIST]'"
|
||||
params:
|
||||
IPS_LIST:
|
||||
list_join:
|
||||
- '],['
|
||||
- {get_param: ceph_mon_ips}
|
||||
ceph::profile::params::ms_bind_ipv6: {get_param: CephIPv6}
|
||||
ceph::profile::params::fsid: {get_param: ceph_fsid}
|
||||
ceph::profile::params::mon_key: {get_param: ceph_mon_key}
|
||||
# We should use a separated key for the non-admin clients
|
||||
ceph::profile::params::client_keys:
|
||||
str_replace:
|
||||
template: "{
|
||||
client.admin: {
|
||||
secret: 'ADMIN_KEY',
|
||||
mode: '0600',
|
||||
cap_mon: 'allow *',
|
||||
cap_osd: 'allow *',
|
||||
cap_mds: 'allow *'
|
||||
},
|
||||
client.bootstrap-osd: {
|
||||
secret: 'ADMIN_KEY',
|
||||
keyring_path: '/var/lib/ceph/bootstrap-osd/ceph.keyring',
|
||||
cap_mon: 'allow profile bootstrap-osd'
|
||||
},
|
||||
client.CLIENT_USER: {
|
||||
secret: 'CLIENT_KEY',
|
||||
mode: '0644',
|
||||
cap_mon: 'allow r',
|
||||
cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
|
||||
}
|
||||
}"
|
||||
params:
|
||||
CLIENT_USER: {get_param: CephClientUserName}
|
||||
CLIENT_KEY: {get_param: ceph_client_key}
|
||||
ADMIN_KEY: {get_param: ceph_admin_key}
|
||||
NOVA_POOL: {get_param: NovaRbdPoolName}
|
||||
CINDER_POOL: {get_param: CinderRbdPoolName}
|
||||
CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
|
||||
GLANCE_POOL: {get_param: GlanceRbdPoolName}
|
||||
GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
|
||||
nova::compute::rbd::libvirt_images_rbd_pool: {get_param: NovaRbdPoolName}
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_pool_name: {get_param: CinderRbdPoolName}
|
||||
glance::backend::rbd::rbd_store_pool: {get_param: GlanceRbdPoolName}
|
||||
gnocchi::storage::ceph::ceph_pool: {get_param: GnocchiRbdPoolName}
|
||||
gnocchi::storage::ceph::ceph_username: {get_param: CephClientUserName}
|
||||
nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
|
||||
glance::backend::rbd::rbd_store_user: {get_param: CephClientUserName}
|
||||
nova::compute::rbd::rbd_keyring:
|
||||
list_join:
|
||||
- '.'
|
||||
@ -131,13 +38,6 @@ resources:
|
||||
- 'client'
|
||||
- {get_param: CephClientUserName}
|
||||
- 'keyring'
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_user_name: {get_param: CephClientUserName}
|
||||
ceph_pools:
|
||||
- {get_param: CinderRbdPoolName}
|
||||
- {get_param: CinderBackupRbdPoolName}
|
||||
- {get_param: NovaRbdPoolName}
|
||||
- {get_param: GlanceRbdPoolName}
|
||||
- {get_param: GnocchiRbdPoolName}
|
||||
|
||||
outputs:
|
||||
config_id:
|
||||
|
@ -243,6 +243,7 @@ resources:
|
||||
- service_configs
|
||||
- ceph_cluster # provided by CephClusterConfig
|
||||
- ceph
|
||||
- all_nodes # provided by allNodesConfig
|
||||
- '"%{::osfamily}"'
|
||||
- common
|
||||
- network
|
||||
|
@ -83,10 +83,6 @@ parameters:
|
||||
default: true
|
||||
description: Whether to deploy a LoadBalancer on the Controller
|
||||
type: boolean
|
||||
EnableCephStorage:
|
||||
default: false
|
||||
description: Whether to deploy Ceph Storage (OSD) on the Controller
|
||||
type: boolean
|
||||
ExtraConfig:
|
||||
default: {}
|
||||
description: |
|
||||
@ -575,7 +571,6 @@ resources:
|
||||
enable_fencing: {get_param: EnableFencing}
|
||||
enable_galera: {get_param: EnableGalera}
|
||||
enable_load_balancer: {get_param: EnableLoadBalancer}
|
||||
enable_ceph_storage: {get_param: EnableCephStorage}
|
||||
manage_firewall: {get_param: ManageFirewall}
|
||||
purge_firewall_rules: {get_param: PurgeFirewallRules}
|
||||
mysql_innodb_buffer_pool_size: {get_param: MysqlInnodbBufferPoolSize}
|
||||
@ -851,7 +846,6 @@ resources:
|
||||
# MySQL
|
||||
admin_password: {get_input: admin_password}
|
||||
enable_galera: {get_input: enable_galera}
|
||||
enable_ceph_storage: {get_input: enable_ceph_storage}
|
||||
mysql_innodb_buffer_pool_size: {get_input: mysql_innodb_buffer_pool_size}
|
||||
mysql_max_connections: {get_input: mysql_max_connections}
|
||||
mysql::server::root_password: {get_input: mysql_root_password}
|
||||
|
@ -1,120 +0,0 @@
|
||||
heat_template_version: 2015-04-30
|
||||
description: 'Configure parameters for an external Ceph cluster via Puppet.'
|
||||
|
||||
parameters:
|
||||
ceph_storage_count:
|
||||
default: 0
|
||||
type: number
|
||||
description: Number of Ceph storage nodes. Used to enable/disable managed Ceph installation.
|
||||
ceph_external_mon_ips:
|
||||
default: ''
|
||||
type: string
|
||||
description: List of external Ceph Mon host IPs.
|
||||
ceph_client_key:
|
||||
default: ''
|
||||
type: string
|
||||
description: Ceph key used to create the 'openstack' user keyring.
|
||||
ceph_fsid:
|
||||
default: ''
|
||||
type: string
|
||||
# The following parameters are unused for external Ceph clusters and
|
||||
# are here and exist for compatibility
|
||||
ceph_admin_key:
|
||||
default: ''
|
||||
type: string
|
||||
ceph_mon_key:
|
||||
default: ''
|
||||
type: string
|
||||
ceph_mon_names:
|
||||
type: comma_delimited_list
|
||||
ceph_mon_ips:
|
||||
type: comma_delimited_list
|
||||
NovaRbdPoolName:
|
||||
default: vms
|
||||
type: string
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CinderBackupRbdPoolName:
|
||||
default: backups
|
||||
type: string
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
GnocchiRbdPoolName:
|
||||
default: metrics
|
||||
type: string
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
CephIPv6:
|
||||
default: False
|
||||
type: boolean
|
||||
|
||||
resources:
|
||||
CephClusterConfigImpl:
|
||||
type: OS::Heat::StructuredConfig
|
||||
properties:
|
||||
group: os-apply-config
|
||||
config:
|
||||
hiera:
|
||||
datafiles:
|
||||
ceph_cluster:
|
||||
mapped_data:
|
||||
ceph_storage_count: {get_param: ceph_storage_count}
|
||||
enable_external_ceph: true
|
||||
ceph_ipv6: {get_param: CephIPv6}
|
||||
ceph_mon_host: {get_param: ceph_external_mon_ips}
|
||||
ceph_mon_host_v6: {get_param: ceph_external_mon_ips}
|
||||
ceph::profile::params::fsid: {get_param: ceph_fsid}
|
||||
ceph::profile::params::client_keys:
|
||||
str_replace:
|
||||
template: "{
|
||||
client.CLIENT_USER: {
|
||||
secret: 'CLIENT_KEY',
|
||||
mode: '0644',
|
||||
cap_mon: 'allow r',
|
||||
cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
|
||||
}
|
||||
}"
|
||||
params:
|
||||
CLIENT_USER: {get_param: CephClientUserName}
|
||||
CLIENT_KEY: {get_param: ceph_client_key}
|
||||
NOVA_POOL: {get_param: NovaRbdPoolName}
|
||||
CINDER_POOL: {get_param: CinderRbdPoolName}
|
||||
CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
|
||||
GLANCE_POOL: {get_param: GlanceRbdPoolName}
|
||||
GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
|
||||
ceph::profile::params::ms_bind_ipv6: {get_param: CephIPv6}
|
||||
nova::compute::rbd::libvirt_images_rbd_pool: {get_param: NovaRbdPoolName}
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_pool_name: {get_param: CinderRbdPoolName}
|
||||
glance::backend::rbd::rbd_store_pool: {get_param: GlanceRbdPoolName}
|
||||
gnocchi::storage::ceph::ceph_pool: {get_param: GnocchiRbdPoolName}
|
||||
gnocchi::storage::ceph::ceph_username: {get_param: CephClientUserName}
|
||||
nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
|
||||
glance::backend::rbd::rbd_store_user: {get_param: CephClientUserName}
|
||||
nova::compute::rbd::rbd_keyring:
|
||||
list_join:
|
||||
- '.'
|
||||
- - 'client'
|
||||
- {get_param: CephClientUserName}
|
||||
gnocchi::storage::ceph::ceph_keyring:
|
||||
list_join:
|
||||
- '.'
|
||||
- - '/etc/ceph/ceph'
|
||||
- 'client'
|
||||
- {get_param: CephClientUserName}
|
||||
- 'keyring'
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_user_name: {get_param: CephClientUserName}
|
||||
ceph_pools:
|
||||
- {get_param: CinderRbdPoolName}
|
||||
- {get_param: CinderBackupRbdPoolName}
|
||||
- {get_param: NovaRbdPoolName}
|
||||
- {get_param: GlanceRbdPoolName}
|
||||
- {get_param: GnocchiRbdPoolName}
|
||||
|
||||
outputs:
|
||||
config_id:
|
||||
description: The ID of the CephClusterConfigImpl resource.
|
||||
value:
|
||||
{get_resource: CephClusterConfigImpl}
|
@ -24,33 +24,7 @@ if hiera('step') >= 1 {
|
||||
|
||||
}
|
||||
|
||||
if hiera('step') >= 3 {
|
||||
if str2bool(hiera('ceph_osd_selinux_permissive', true)) {
|
||||
exec { 'set selinux to permissive on boot':
|
||||
command => "sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config",
|
||||
onlyif => "test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
}
|
||||
|
||||
exec { 'set selinux to permissive':
|
||||
command => 'setenforce 0',
|
||||
onlyif => "which setenforce && getenforce | grep -i 'enforcing'",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
} -> Class['ceph::profile::osd']
|
||||
}
|
||||
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::client
|
||||
include ::ceph::profile::osd
|
||||
|
||||
if hiera('step') >= 4 {
|
||||
hiera_include('ceph_classes')
|
||||
}
|
||||
|
||||
|
@ -32,21 +32,6 @@ if hiera('step') >= 4 {
|
||||
ensure => present,
|
||||
}
|
||||
|
||||
$rbd_ephemeral_storage = hiera('nova::compute::rbd::ephemeral_storage', false)
|
||||
$rbd_persistent_storage = hiera('rbd_persistent_storage', false)
|
||||
if $rbd_ephemeral_storage or $rbd_persistent_storage {
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::client
|
||||
}
|
||||
|
||||
nova_config {
|
||||
'DEFAULT/my_ip': value => $ipaddress;
|
||||
'DEFAULT/linuxnet_interface_driver': value => 'nova.network.linux_net.LinuxOVSInterfaceDriver';
|
||||
|
@ -79,55 +79,6 @@ if hiera('step') >= 2 {
|
||||
}
|
||||
include ::aodh::db::mysql
|
||||
|
||||
$enable_ceph = hiera('ceph_storage_count', 0) > 0 or hiera('enable_ceph_storage', false)
|
||||
|
||||
if $enable_ceph {
|
||||
$mon_initial_members = downcase(hiera('ceph_mon_initial_members'))
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_initial_members => $mon_initial_members,
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::mon
|
||||
}
|
||||
|
||||
if str2bool(hiera('enable_ceph_storage', false)) {
|
||||
if str2bool(hiera('ceph_osd_selinux_permissive', true)) {
|
||||
exec { 'set selinux to permissive on boot':
|
||||
command => "sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config",
|
||||
onlyif => "test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
}
|
||||
|
||||
exec { 'set selinux to permissive':
|
||||
command => 'setenforce 0',
|
||||
onlyif => "which setenforce && getenforce | grep -i 'enforcing'",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
} -> Class['ceph::profile::osd']
|
||||
}
|
||||
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::osd
|
||||
}
|
||||
|
||||
if str2bool(hiera('enable_external_ceph', false)) {
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::client
|
||||
}
|
||||
|
||||
} #END STEP 2
|
||||
|
||||
if hiera('step') >= 4 {
|
||||
@ -204,15 +155,6 @@ if hiera('step') >= 4 {
|
||||
}
|
||||
}
|
||||
|
||||
if $enable_ceph {
|
||||
$ceph_pools = hiera('ceph_pools')
|
||||
ceph::pool { $ceph_pools :
|
||||
pg_num => hiera('ceph::profile::params::osd_pool_default_pg_num'),
|
||||
pgp_num => hiera('ceph::profile::params::osd_pool_default_pgp_num'),
|
||||
size => hiera('ceph::profile::params::osd_pool_default_size'),
|
||||
}
|
||||
}
|
||||
|
||||
# Ceilometer
|
||||
$ceilometer_backend = downcase(hiera('ceilometer_backend'))
|
||||
case $ceilometer_backend {
|
||||
|
@ -262,57 +262,6 @@ if hiera('step') >= 2 {
|
||||
}
|
||||
}
|
||||
|
||||
# Ceph
|
||||
$enable_ceph = hiera('ceph_storage_count', 0) > 0 or hiera('enable_ceph_storage', false)
|
||||
|
||||
if $enable_ceph {
|
||||
$mon_initial_members = downcase(hiera('ceph_mon_initial_members'))
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_initial_members => $mon_initial_members,
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::mon
|
||||
}
|
||||
|
||||
if str2bool(hiera('enable_ceph_storage', false)) {
|
||||
if str2bool(hiera('ceph_osd_selinux_permissive', true)) {
|
||||
exec { 'set selinux to permissive on boot':
|
||||
command => "sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config",
|
||||
onlyif => "test -f /etc/selinux/config && ! grep '^SELINUX=permissive' /etc/selinux/config",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
}
|
||||
|
||||
exec { 'set selinux to permissive':
|
||||
command => 'setenforce 0',
|
||||
onlyif => "which setenforce && getenforce | grep -i 'enforcing'",
|
||||
path => ['/usr/bin', '/usr/sbin'],
|
||||
} -> Class['ceph::profile::osd']
|
||||
}
|
||||
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::osd
|
||||
}
|
||||
|
||||
if str2bool(hiera('enable_external_ceph', false)) {
|
||||
if str2bool(hiera('ceph_ipv6', false)) {
|
||||
$mon_host = hiera('ceph_mon_host_v6')
|
||||
} else {
|
||||
$mon_host = hiera('ceph_mon_host')
|
||||
}
|
||||
class { '::ceph::profile::params':
|
||||
mon_host => $mon_host,
|
||||
}
|
||||
include ::ceph::conf
|
||||
include ::ceph::profile::client
|
||||
}
|
||||
|
||||
|
||||
} #END STEP 2
|
||||
|
||||
if hiera('step') >= 4 or ( hiera('step') >= 3 and $sync_db ) {
|
||||
@ -398,15 +347,6 @@ MYSQL_HOST=localhost\n",
|
||||
}
|
||||
}
|
||||
|
||||
if $enable_ceph {
|
||||
$ceph_pools = hiera('ceph_pools')
|
||||
ceph::pool { $ceph_pools :
|
||||
pg_num => hiera('ceph::profile::params::osd_pool_default_pg_num'),
|
||||
pgp_num => hiera('ceph::profile::params::osd_pool_default_pgp_num'),
|
||||
size => hiera('ceph::profile::params::osd_pool_default_size'),
|
||||
}
|
||||
}
|
||||
|
||||
# Ceilometer
|
||||
case downcase(hiera('ceilometer_backend')) {
|
||||
/mysql/: {
|
||||
|
94
puppet/services/ceph-base.yaml
Normal file
94
puppet/services/ceph-base.yaml
Normal file
@ -0,0 +1,94 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Ceph base service. Shared by all Ceph services.
|
||||
|
||||
parameters:
|
||||
CephAdminKey:
|
||||
default: ''
|
||||
description: The Ceph admin client key. Can be created with ceph-authtool --gen-print-key.
|
||||
type: string
|
||||
hidden: true
|
||||
CephClientKey:
|
||||
default: ''
|
||||
description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
|
||||
type: string
|
||||
hidden: true
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
CephClusterFSID:
|
||||
default: ''
|
||||
type: string
|
||||
description: The Ceph cluster FSID. Must be a UUID.
|
||||
CephIPv6:
|
||||
default: False
|
||||
type: boolean
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CinderBackupRbdPoolName:
|
||||
default: backups
|
||||
type: string
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
GnocchiRbdPoolName:
|
||||
default: metrics
|
||||
type: string
|
||||
NovaRbdPoolName:
|
||||
default: vms
|
||||
type: string
|
||||
# DEPRECATED options for compatibility with overcloud.yaml
|
||||
# This should be removed and manipulation of the ControllerServices list
|
||||
# used instead, but we need client support for that first
|
||||
ControllerEnableCephStorage:
|
||||
default: false
|
||||
description: Whether to deploy Ceph Storage (OSD) on the Controller
|
||||
type: boolean
|
||||
|
||||
parameter_groups:
|
||||
- label: deprecated
|
||||
description: Do not use deprecated params, they will be removed.
|
||||
parameters:
|
||||
- ControllerEnableCephStorage
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Ceph base service.
|
||||
value:
|
||||
config_settings:
|
||||
tripleo::profile::base::ceph::ceph_ipv6: {get_param: CephIPv6}
|
||||
tripleo::profile::base::ceph::enable_ceph_storage: {get_param: ControllerEnableCephStorage}
|
||||
ceph::profile::params::fsid: {get_param: CephClusterFSID}
|
||||
ceph::profile::params::client_keys:
|
||||
str_replace:
|
||||
template: "{
|
||||
client.admin: {
|
||||
secret: 'ADMIN_KEY',
|
||||
mode: '0600',
|
||||
cap_mon: 'allow *',
|
||||
cap_osd: 'allow *',
|
||||
cap_mds: 'allow *'
|
||||
},
|
||||
client.bootstrap-osd: {
|
||||
secret: 'ADMIN_KEY',
|
||||
keyring_path: '/var/lib/ceph/bootstrap-osd/ceph.keyring',
|
||||
cap_mon: 'allow profile bootstrap-osd'
|
||||
},
|
||||
client.CLIENT_USER: {
|
||||
secret: 'CLIENT_KEY',
|
||||
mode: '0644',
|
||||
cap_mon: 'allow r',
|
||||
cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
|
||||
}
|
||||
}"
|
||||
params:
|
||||
CLIENT_USER: {get_param: CephClientUserName}
|
||||
CLIENT_KEY: {get_param: CephClientKey}
|
||||
ADMIN_KEY: {get_param: CephAdminKey}
|
||||
NOVA_POOL: {get_param: NovaRbdPoolName}
|
||||
CINDER_POOL: {get_param: CinderRbdPoolName}
|
||||
CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
|
||||
GLANCE_POOL: {get_param: GlanceRbdPoolName}
|
||||
GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
|
24
puppet/services/ceph-client.yaml
Normal file
24
puppet/services/ceph-client.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Ceph Client service.
|
||||
|
||||
parameters:
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
||||
resources:
|
||||
CephBase:
|
||||
type: ./ceph-base.yaml
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Cinder OSD service.
|
||||
value:
|
||||
config_settings:
|
||||
get_attr: [CephBase, role_data, config_settings]
|
||||
step_config: |
|
||||
include ::tripleo::profile::base::ceph::client
|
65
puppet/services/ceph-external.yaml
Normal file
65
puppet/services/ceph-external.yaml
Normal file
@ -0,0 +1,65 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Ceph External service.
|
||||
|
||||
parameters:
|
||||
CephClientKey:
|
||||
default: ''
|
||||
description: The Ceph client key. Can be created with ceph-authtool --gen-print-key. Currently only used for external Ceph deployments to create the openstack user keyring.
|
||||
type: string
|
||||
hidden: true
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
CephClusterFSID:
|
||||
default: ''
|
||||
type: string
|
||||
description: The Ceph cluster FSID. Must be a UUID.
|
||||
CephExternalMonHost:
|
||||
default: ''
|
||||
type: string
|
||||
description: List of externally managed Ceph Mon Host IPs. Only used for external Ceph deployments.
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CinderBackupRbdPoolName:
|
||||
default: backups
|
||||
type: string
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
GnocchiRbdPoolName:
|
||||
default: metrics
|
||||
type: string
|
||||
NovaRbdPoolName:
|
||||
default: vms
|
||||
type: string
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Ceph External service.
|
||||
value:
|
||||
config_settings:
|
||||
tripleo::profile::base::ceph::ceph_mon_host: {get_param: CephExternalMonHost}
|
||||
ceph::profile::params::fsid: {get_param: CephClusterFSID}
|
||||
ceph::profile::params::client_keys:
|
||||
str_replace:
|
||||
template: "{
|
||||
client.CLIENT_USER: {
|
||||
secret: 'CLIENT_KEY',
|
||||
mode: '0644',
|
||||
cap_mon: 'allow r',
|
||||
cap_osd: 'allow class-read object_prefix rbd_children, allow rwx pool=CINDER_POOL, allow rwx pool=CINDERBACKUP_POOL, allow rwx pool=NOVA_POOL, allow rwx pool=GLANCE_POOL, allow rwx pool=GNOCCHI_POOL'
|
||||
}
|
||||
}"
|
||||
params:
|
||||
CLIENT_USER: {get_param: CephClientUserName}
|
||||
CLIENT_KEY: {get_param: CephClientKey}
|
||||
NOVA_POOL: {get_param: NovaRbdPoolName}
|
||||
CINDER_POOL: {get_param: CinderRbdPoolName}
|
||||
CINDERBACKUP_POOL: {get_param: CinderBackupRbdPoolName}
|
||||
GLANCE_POOL: {get_param: GlanceRbdPoolName}
|
||||
GNOCCHI_POOL: {get_param: GnocchiRbdPoolName}
|
||||
step_config: |
|
||||
include ::tripleo::profile::base::ceph::client
|
56
puppet/services/ceph-mon.yaml
Normal file
56
puppet/services/ceph-mon.yaml
Normal file
@ -0,0 +1,56 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Ceph Monitor service.
|
||||
|
||||
parameters:
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
CephIPv6:
|
||||
default: False
|
||||
type: boolean
|
||||
CephMonKey:
|
||||
default: ''
|
||||
description: The Ceph monitors key. Can be created with ceph-authtool --gen-print-key.
|
||||
type: string
|
||||
hidden: true
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CinderBackupRbdPoolName:
|
||||
default: backups
|
||||
type: string
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
GnocchiRbdPoolName:
|
||||
default: metrics
|
||||
type: string
|
||||
NovaRbdPoolName:
|
||||
default: vms
|
||||
type: string
|
||||
|
||||
resources:
|
||||
CephBase:
|
||||
type: ./ceph-base.yaml
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Ceph Monitor service.
|
||||
value:
|
||||
config_settings:
|
||||
map_merge:
|
||||
- get_attr: [CephBase, role_data, config_settings]
|
||||
- ceph::profile::params::ms_bind_ipv6: {get_param: CephIPv6}
|
||||
ceph::profile::params::mon_key: {get_param: CephMonKey}
|
||||
tripleo::profile::base::ceph::mon::ceph_pools:
|
||||
- {get_param: CinderRbdPoolName}
|
||||
- {get_param: CinderBackupRbdPoolName}
|
||||
- {get_param: NovaRbdPoolName}
|
||||
- {get_param: GlanceRbdPoolName}
|
||||
- {get_param: GnocchiRbdPoolName}
|
||||
step_config: |
|
||||
include ::tripleo::profile::base::ceph::mon
|
24
puppet/services/ceph-osd.yaml
Normal file
24
puppet/services/ceph-osd.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
heat_template_version: 2016-04-08
|
||||
|
||||
description: >
|
||||
Ceph OSD service.
|
||||
|
||||
parameters:
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
|
||||
resources:
|
||||
CephBase:
|
||||
type: ./ceph-base.yaml
|
||||
|
||||
outputs:
|
||||
role_data:
|
||||
description: Role data for the Cinder OSD service.
|
||||
value:
|
||||
config_settings:
|
||||
get_attr: [CephBase, role_data, config_settings]
|
||||
step_config: |
|
||||
include ::tripleo::profile::base::ceph::osd
|
@ -36,6 +36,12 @@ parameters:
|
||||
NFS servers used by Cinder NFS backend. Effective when
|
||||
CinderEnableNfsBackend is true.
|
||||
type: comma_delimited_list
|
||||
CinderRbdPoolName:
|
||||
default: volumes
|
||||
type: string
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
EndpointMap:
|
||||
default: {}
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
@ -67,5 +73,7 @@ outputs:
|
||||
SERVERS: {get_param: CinderNfsServers}
|
||||
tripleo::profile::base::cinder::volume::iscsi::cinder_lvm_loop_device_size: {get_param: CinderLVMLoopDeviceSize}
|
||||
tripleo::profile::base::cinder::volume::iscsi::cinder_iscsi_helper: {get_param: CinderISCSIHelper}
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_pool_name: {get_param: CinderRbdPoolName}
|
||||
tripleo::profile::base::cinder::volume::rbd::cinder_rbd_user_name: {get_param: CephClientUserName}
|
||||
step_config: |
|
||||
include ::tripleo::profile::base::cinder::volume
|
||||
|
@ -9,6 +9,9 @@ parameters:
|
||||
description: Mapping of service endpoint -> protocol. Typically set
|
||||
via parameter_defaults in the resource registry.
|
||||
type: json
|
||||
CephClientUserName:
|
||||
default: openstack
|
||||
type: string
|
||||
Debug:
|
||||
default: ''
|
||||
description: Set to True to enable debugging on all services.
|
||||
@ -36,6 +39,9 @@ parameters:
|
||||
default: 0
|
||||
description: Number of workers for Glance service.
|
||||
type: number
|
||||
GlanceRbdPoolName:
|
||||
default: images
|
||||
type: string
|
||||
RabbitPassword:
|
||||
description: The password for RabbitMQ
|
||||
type: string
|
||||
@ -85,6 +91,8 @@ outputs:
|
||||
glance::backend::swift::swift_store_auth_address: {get_param: [EndpointMap, KeystoneInternal, uri] }
|
||||
glance::backend::swift::swift_store_user: service:glance
|
||||
glance::backend::swift::swift_store_key: {get_param: GlancePassword}
|
||||
glance::backend::rbd::rbd_store_pool: {get_param: GlanceRbdPoolName}
|
||||
glance::backend::rbd::rbd_store_user: {get_param: CephClientUserName}
|
||||
glance_backend: {get_param: GlanceBackend}
|
||||
glance::db::mysql::password: {get_param: GlancePassword}
|
||||
glance::notify::rabbitmq::rabbit_userid: {get_param: RabbitUserName}
|
||||
|
Loading…
x
Reference in New Issue
Block a user