Add Cinder API/Scheduler/Volume roles

Includes both the base and the pacemaker roles.

Change-Id: I3c6d5226eed5f0f852b0ad9476c7cd9a959fda69
This commit is contained in:
Giulio Fidente 2016-04-28 15:32:55 -05:00 committed by Emilien Macchi
parent df484b57db
commit f75502475d
13 changed files with 822 additions and 0 deletions

View File

@ -0,0 +1,52 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder
#
# Cinder common profile for tripleo
#
# === Parameters
#
# [*cinder_enable_db_purge*]
# (Optional) Wheter to enable db purging
# Defaults to true
#
# [*pacemaker_master*]
# (Optional) The master node runs some tasks
# one step earlier than others; disable to
# the node is not the master.
# Defaults to true
#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder (
$cinder_enable_db_purge = true,
$pacemaker_master = true,
$step = hiera('step'),
) {
if $step >= 4 or ($step >= 3 and $pacemaker_master) {
include ::cinder
include ::cinder::config
}
if $step >= 5 {
if $cinder_enable_db_purge {
include ::cinder::cron::db_purge
}
}
}

View File

@ -0,0 +1,49 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::api
#
# Cinder API profile for tripleo
#
# === Parameters
#
# [*sync_db*]
# (Optional) Whether to run db sync
# Defaults to true
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::api (
$sync_db = true,
$step = hiera('step'),
) {
class { '::tripleo::profile::base::cinder':
pacemaker_master => $sync_db,
}
if $step >= 3 and $sync_db {
include ::cinder::db::mysql
}
if $step >= 4 or ($step >= 3 and $sync_db) {
include ::cinder::api
include ::cinder::ceilometer
include ::cinder::glance
}
}

View File

@ -0,0 +1,36 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::scheduler
#
# Cinder Scheduler profile for tripleo
#
# === Parameters
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::scheduler (
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder
if $step >= 4 {
include ::cinder::scheduler
}
}

View File

@ -0,0 +1,118 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume
#
# Cinder Volume profile for tripleo
#
# === Parameters
#
# [*cinder_enable_dellsc_backend*]
# (Optional) Whether to enable the delsc backend
# Defaults to true
#
# [*cinder_enable_eqlx_backend*]
# (Optional) Whether to enable the eqlx backend
# Defaults to true
#
# [*cinder_enable_iscsi_backend*]
# (Optional) Whether to enable the iscsi backend
# Defaults to true
#
# [*cinder_enable_netapp_backend*]
# (Optional) Whether to enable the netapp backend
# Defaults to true
#
# [*cinder_enable_nfs_backend*]
# (Optional) Whether to enable the nfs backend
# Defaults to true
#
# [*cinder_enable_rbd_backend*]
# (Optional) Whether to enable the rbd backend
# Defaults to true
#
# [*cinder_user_enabled_backends*]
# (Optional) List of additional backend stanzas to activate
# Defaults to hiera('cinder_user_enabled_backends')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume (
$cinder_enable_dellsc_backend = false,
$cinder_enable_eqlx_backend = false,
$cinder_enable_iscsi_backend = true,
$cinder_enable_netapp_backend = false,
$cinder_enable_nfs_backend = false,
$cinder_enable_rbd_backend = false,
$cinder_user_enabled_backends = hiera('cinder_user_enabled_backends', undef),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder
if $step >= 4 {
include ::cinder::volume
if $cinder_enable_dellsc_backend {
include ::tripleo::profile::base::cinder::volume::dellsc
$cinder_dellsc_backend_name = hiera('cinder::backend::dellsc_iscsi::volume_backend_name', 'tripleo_dellsc')
} else {
$cinder_dellsc_backend_name = undef
}
if $cinder_enable_eqlx_backend {
include ::tripleo::profile::base::cinder::volume::eqlx
$cinder_eqlx_backend_name = hiera('cinder::backend::eqlx::volume_backend_name', 'tripleo_eqlx')
} else {
$cinder_eqlx_backend_name = undef
}
if $cinder_enable_iscsi_backend {
include ::tripleo::profile::base::cinder::volume::iscsi
$cinder_iscsi_backend_name = hiera('cinder::backend::iscsi::volume_backend_name', 'tripleo_iscsi')
} else {
$cinder_iscsi_backend_name = undef
}
if $cinder_enable_netapp_backend {
include ::tripleo::profile::base::cinder::volume::netapp
$cinder_netapp_backend_name = hiera('cinder::backend::netapp::volume_backend_name', 'tripleo_netapp')
} else {
$cinder_netapp_backend_name = undef
}
if $cinder_enable_nfs_backend {
include ::tripleo::profile::base::cinder::volume::nfs
$cinder_nfs_backend_name = hiera('cinder::backend::nfs::volume_backend_name', 'tripleo_nfs')
} else {
$cinder_nfs_backend_name = undef
}
if $cinder_enable_rbd_backend {
include ::tripleo::profile::base::cinder::volume::rbd
$cinder_rbd_backend_name = hiera('cinder::backend::rbd::volume_backend_name', 'tripleo_ceph')
} else {
$cinder_rbd_backend_name = undef
}
$cinder_enabled_backends = delete_undef_values([$cinder_iscsi_backend_name, $cinder_rbd_backend_name, $cinder_eqlx_backend_name, $cinder_dellsc_backend_name, $cinder_netapp_backend_name, $cinder_nfs_backend_name, $cinder_user_enabled_backends])
class { '::cinder::backends' :
enabled_backends => $cinder_enabled_backends,
}
}
}

View File

@ -0,0 +1,51 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::dellsc
#
# Cinder Volume dellsc profile for tripleo
#
# === Parameters
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_dellsc'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::dellsc (
$backend_name = hiera('cinder::backend::dellsc_iscsi::volume_backend_name', 'tripleo_dellsc'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
cinder::backend::dellsc_iscsi { $backend_name :
san_ip => hiera('cinder::backend::dellsc_iscsi::san_ip', undef),
san_login => hiera('cinder::backend::dellsc_iscsi::san_login', undef),
san_password => hiera('cinder::backend::dellsc_iscsi::san_password', undef),
dell_sc_ssn => hiera('cinder::backend::dellsc_iscsi::dell_sc_ssn', undef),
iscsi_ip_address => hiera('cinder::backend::dellsc_iscsi::iscsi_ip_address', undef),
iscsi_port => hiera('cinder::backend::dellsc_iscsi::iscsi_port', undef),
dell_sc_api_port => hiera('cinder::backend::dellsc_iscsi::dell_sc_api_port', undef),
dell_sc_server_folder => hiera('cinder::backend::dellsc_iscsi::dell_sc_server_folder', undef),
dell_sc_volume_folder => hiera('cinder::backend::dellsc_iscsi::dell_sc_volume_folder', undef),
}
}
}

View File

@ -0,0 +1,51 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::eqlx
#
# Cinder Volume eqlx profile for tripleo
#
# === Parameters
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_eqlx'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::eqlx (
$backend_name = hiera('cinder::backend::eqlx::volume_backend_name', 'tripleo_eqlx'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
cinder::backend::eqlx { $backend_name :
san_ip => hiera('cinder::backend::eqlx::san_ip', undef),
san_login => hiera('cinder::backend::eqlx::san_login', undef),
san_password => hiera('cinder::backend::eqlx::san_password', undef),
san_thin_provision => hiera('cinder::backend::eqlx::san_thin_provision', undef),
eqlx_group_name => hiera('cinder::backend::eqlx::eqlx_group_name', undef),
eqlx_pool => hiera('cinder::backend::eqlx::eqlx_pool', undef),
eqlx_use_chap => hiera('cinder::backend::eqlx::eqlx_use_chap', undef),
eqlx_chap_login => hiera('cinder::backend::eqlx::eqlx_chap_login', undef),
eqlx_chap_password => hiera('cinder::backend::eqlx::eqlx_san_password', undef),
}
}
}

View File

@ -0,0 +1,62 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::iscsi
#
# Cinder Volume iscsi profile for tripleo
#
# === Parameters
#
# [*cinder_iscsi_address*]
# The address where to bind the iscsi targets daemon
#
# [*cinder_iscsi_helper*]
# (Optional) The iscsi helper to use
# Defaults to 'tgtadm'
#
# [*cinder_lvm_loop_device_size*]
# (Optional) The size (in MB) of the LVM loopback volume
# Defaults to '10280'
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_iscsi'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::iscsi (
$cinder_iscsi_address,
$cinder_iscsi_helper = 'tgtadm',
$cinder_lvm_loop_device_size = '10280',
$backend_name = hiera('cinder::backend::iscsi::volume_backend_name', 'tripleo_iscsi'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
class { '::cinder::setup_test_volume':
size => join([$cinder_lvm_loop_device_size, 'M']),
}
cinder::backend::iscsi { $backend_name :
iscsi_ip_address => $cinder_iscsi_address,
iscsi_helper => $cinder_iscsi_helper,
}
}
}

View File

@ -0,0 +1,66 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::netapp
#
# Cinder Volume netapp profile for tripleo
#
# === Parameters
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_netapp'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::netapp (
$backend_name = hiera('cinder::backend::netapp::volume_backend_name', 'tripleo_netapp'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
if hiera('cinder::backend::netapp::nfs_shares', undef) {
$cinder_netapp_nfs_shares = split(hiera('cinder::backend::netapp::nfs_shares', undef), ',')
}
cinder::backend::netapp { $backend_name :
netapp_login => hiera('cinder::backend::netapp::netapp_login', undef),
netapp_password => hiera('cinder::backend::netapp::netapp_password', undef),
netapp_server_hostname => hiera('cinder::backend::netapp::netapp_server_hostname', undef),
netapp_server_port => hiera('cinder::backend::netapp::netapp_server_port', undef),
netapp_size_multiplier => hiera('cinder::backend::netapp::netapp_size_multiplier', undef),
netapp_storage_family => hiera('cinder::backend::netapp::netapp_storage_family', undef),
netapp_storage_protocol => hiera('cinder::backend::netapp::netapp_storage_protocol', undef),
netapp_transport_type => hiera('cinder::backend::netapp::netapp_transport_type', undef),
netapp_vfiler => hiera('cinder::backend::netapp::netapp_vfiler', undef),
netapp_volume_list => hiera('cinder::backend::netapp::netapp_volume_list', undef),
netapp_vserver => hiera('cinder::backend::netapp::netapp_vserver', undef),
netapp_partner_backend_name => hiera('cinder::backend::netapp::netapp_partner_backend_name', undef),
nfs_shares => $cinder_netapp_nfs_shares,
nfs_shares_config => hiera('cinder::backend::netapp::nfs_shares_config', undef),
netapp_copyoffload_tool_path => hiera('cinder::backend::netapp::netapp_copyoffload_tool_path', undef),
netapp_controller_ips => hiera('cinder::backend::netapp::netapp_controller_ips', undef),
netapp_sa_password => hiera('cinder::backend::netapp::netapp_sa_password', undef),
netapp_storage_pools => hiera('cinder::backend::netapp::netapp_storage_pools', undef),
netapp_eseries_host_type => hiera('cinder::backend::netapp::netapp_eseries_host_type', undef),
netapp_webservice_path => hiera('cinder::backend::netapp::netapp_webservice_path', undef),
}
}
}

View File

@ -0,0 +1,62 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::nfs
#
# Cinder Volume nfs profile for tripleo
#
# === Parameters
#
# [*cinder_nfs_mount_options*]
# (Optional) List of mount options for the NFS share
# Defaults to ''
#
# [*cinder_nfs_servers*]
# List of NFS shares to mount
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_nfs'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::nfs (
$cinder_nfs_mount_options = '',
$cinder_nfs_servers,
$backend_name = hiera('cinder::backend::nfs::volume_backend_name', 'tripleo_nfs'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
if str2bool($::selinux) {
selboolean { 'virt_use_nfs':
value => on,
persistent => true,
} -> Package['nfs-utils']
}
package {'nfs-utils': } ->
cinder::backend::nfs { $backend_name :
nfs_servers => $cinder_nfs_servers,
nfs_mount_options => $cinder_nfs_mount_options,
nfs_shares_config => '/etc/cinder/shares-nfs.conf',
}
}
}

View File

@ -0,0 +1,66 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::base::cinder::volume::rbd
#
# Cinder Volume rbd profile for tripleo
#
# === Parameters
#
# [*cinder_rbd_backend_host*]
# (Optional) String to use as backend_host in the backend stanza
# Defaults to 'cinder::host'
#
# [*cinder_rbd_pool_name*]
# (Optional) The name of the RBD pool to use
# Defaults to 'volumes'
#
# [*cinder_rbd_secret_uuid*]
# (Optional) UUID of the of the libvirt secret storing the Cephx key
# Defaults to 'ceph::profile::params::fsid'
#
# [*cinder_rbd_user_name*]
# (Optional) The user name for the RBD client
# Defaults to 'openstack'
#
# [*backend_name*]
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_ceph'
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::volume::rbd (
$cinder_rbd_backend_host = hiera('cinder::host', 'hostgroup'),
$cinder_rbd_pool_name = 'volumes',
$cinder_rbd_secret_uuid = hiera('ceph::profile::params::fsid', undef),
$cinder_rbd_user_name = 'openstack',
$backend_name = hiera('cinder::backend::rbd::volume_backend_name', 'tripleo_ceph'),
$step = hiera('step'),
) {
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
cinder::backend::rbd { $backend_name :
backend_host => $cinder_rbd_backend_host,
rbd_pool => $cinder_rbd_pool_name,
rbd_user => $cinder_rbd_user_name,
rbd_secret_uuid => $cinder_rbd_secret_uuid,
}
}
}

View File

@ -0,0 +1,67 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::pacemaker::cinder::api
#
# Cinder API Pacemaker HA profile for tripleo
#
# === Parameters
#
# [*bootstrap_node*]
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::cinder::api (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
Service <| tag == 'cinder-service' |> {
hasrestart => true,
restart => '/bin/true',
start => '/bin/true',
stop => '/bin/true',
}
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
$pacemaker_master = false
}
class { '::tripleo::profile::base::cinder::api':
sync_db => $pacemaker_master,
}
if $step >= 5 and $pacemaker_master {
pacemaker::resource::service { $::cinder::params::api_service :
clone_params => 'interleave=true',
require => Pacemaker::Resource::Ocf['openstack-core'],
}
pacemaker::constraint::base { 'keystone-then-cinder-api-constraint':
constraint_type => 'order',
first_resource => 'openstack-core-clone',
second_resource => "${::cinder::params::api_service}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Ocf['openstack-core'],
Pacemaker::Resource::Service[$::cinder::params::api_service]],
}
}
}

View File

@ -0,0 +1,72 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::pacemaker::cinder::scheduler
#
# Cinder Scheduler Pacemaker HA profile for tripleo
#
# === Parameters
#
# [*bootstrap_node*]
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::cinder::scheduler (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
Service <| tag == 'cinder-service' |> {
hasrestart => true,
restart => '/bin/true',
start => '/bin/true',
stop => '/bin/true',
}
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
$pacemaker_master = false
}
include ::tripleo::profile::base::cinder::scheduler
if $step >= 5 and $pacemaker_master {
pacemaker::resource::service { $::cinder::params::scheduler_service :
clone_params => 'interleave=true',
}
pacemaker::constraint::base { 'cinder-api-then-cinder-scheduler-constraint':
constraint_type => 'order',
first_resource => "${::cinder::params::api_service}-clone",
second_resource => "${::cinder::params::scheduler_service}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::cinder::params::api_service],
Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],
}
pacemaker::constraint::colocation { 'cinder-scheduler-with-cinder-api-colocation':
source => "${::cinder::params::scheduler_service}-clone",
target => "${::cinder::params::api_service}-clone",
score => 'INFINITY',
require => [Pacemaker::Resource::Service[$::cinder::params::api_service],
Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],
}
}
}

View File

@ -0,0 +1,70 @@
# Copyright 2016 Red Hat, 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.
#
# == Class: tripleo::profile::pacemaker::cinder::volume
#
# Cinder Volume Pacemaker HA profile for tripleo
#
# === Parameters
#
# [*bootstrap_node*]
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::cinder::volume (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
Service <| tag == 'cinder-service' |> {
hasrestart => true,
restart => '/bin/true',
start => '/bin/true',
stop => '/bin/true',
}
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
$pacemaker_master = false
}
include ::tripleo::profile::base::cinder::volume
if $step >= 5 and $pacemaker_master {
pacemaker::resource::service { $::cinder::params::volume_service : }
pacemaker::constraint::base { 'cinder-scheduler-then-cinder-volume-constraint':
constraint_type => 'order',
first_resource => "${::cinder::params::scheduler_service}-clone",
second_resource => $::cinder::params::volume_service,
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],
Pacemaker::Resource::Service[$::cinder::params::volume_service]],
}
pacemaker::constraint::colocation { 'cinder-volume-with-cinder-scheduler-colocation':
source => $::cinder::params::volume_service,
target => "${::cinder::params::scheduler_service}-clone",
score => 'INFINITY',
require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],
Pacemaker::Resource::Service[$::cinder::params::volume_service]],
}
}
}