aboutsummaryrefslogtreecommitdiffstats
path: root/puppet/manifests/overcloud_controller_pacemaker.pp
diff options
context:
space:
mode:
Diffstat (limited to 'puppet/manifests/overcloud_controller_pacemaker.pp')
-rw-r--r--puppet/manifests/overcloud_controller_pacemaker.pp125
1 files changed, 94 insertions, 31 deletions
diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp
index d23761c0..ba9b74f0 100644
--- a/puppet/manifests/overcloud_controller_pacemaker.pp
+++ b/puppet/manifests/overcloud_controller_pacemaker.pp
@@ -38,15 +38,14 @@ if $::hostname == downcase(hiera('bootstrap_nodeid')) {
}
# When to start and enable services which haven't been Pacemakerized
-# FIXME: change to only step 4 after this patch is merged:
-# https://review.openstack.org/#/c/180565/
-# $non_pcmk_start = hiera('step') >= 4
# FIXME: remove when we start all OpenStack services using Pacemaker
# (occurences of this variable will be gradually replaced with false)
-$non_pcmk_start = hiera('step') >= 4 or (hiera('step') >= 3 and $pacemaker_master)
+$non_pcmk_start = hiera('step') >= 4
if hiera('step') >= 1 {
+ create_resources(sysctl::value, hiera('sysctl_settings'), {})
+
if count(hiera('ntp::servers')) > 0 {
include ::ntp
}
@@ -60,7 +59,7 @@ if hiera('step') >= 1 {
haproxy_service_manage => false,
}
- $pacemaker_cluster_members = regsubst(hiera('controller_node_ips'), ',', ' ', 'G')
+ $pacemaker_cluster_members = downcase(regsubst(hiera('controller_node_names'), ',', ' ', 'G'))
user { 'hacluster':
ensure => present,
} ->
@@ -113,8 +112,6 @@ if hiera('step') >= 1 {
}
$galera_nodes = downcase(hiera('galera_node_names', $::hostname))
$galera_nodes_count = count(split($galera_nodes, ','))
- $clustercheck_password = hiera('mysql_clustercheck_password')
- $mysql_root_password = hiera('mysql::server::root_password')
$mysqld_options = {
'mysqld' => {
@@ -193,8 +190,8 @@ if hiera('step') >= 2 {
$mongodb_cluster_ready_command = join(suffix(prefix($mongo_node_ips, '/bin/nc -w1 '), ' 27017 < /dev/null'), ' && ')
exec { 'mongodb-ready' :
command => $mongodb_cluster_ready_command,
- timeout => 600,
- tries => 60,
+ timeout => 30,
+ tries => 180,
try_sleep => 10,
}
mongodb_replset { $mongodb_replset :
@@ -211,10 +208,6 @@ if hiera('step') >= 2 {
require => Class['::mysql::server'],
before => Exec['galera-ready'],
}
- mysql_user { 'clustercheckuser@localhost' :
- password_hash => mysql_password($clustercheck_password),
- require => Exec['galera-ready'],
- }
}
# Redis
@@ -239,19 +232,19 @@ if hiera('step') >= 2 {
}
exec { 'galera-ready' :
- command => '/bin/mysql -e "SHOW GLOBAL VARIABLES LIKE \'read_only\'" | /bin/grep -i off',
- timeout => 600,
- tries => 60,
+ command => '/usr/bin/clustercheck >/dev/null',
+ timeout => 30,
+ tries => 180,
try_sleep => 10,
- environment => 'HOME=/root',
+ environment => ["AVAILABLE_WHEN_READONLY=0"],
+ require => File['/etc/sysconfig/clustercheck'],
}
file { '/etc/sysconfig/clustercheck' :
ensure => file,
- content => "MYSQL_USERNAME=clustercheckuser\n
-MYSQL_PASSWORD=${clustercheck_password}\n
+ content => "MYSQL_USERNAME=root\n
+MYSQL_PASSWORD=''\n
MYSQL_HOST=localhost\n",
- require => Exec['galera-ready'],
}
xinetd::service { 'galera-monitor' :
@@ -414,13 +407,13 @@ if hiera('step') >= 3 {
include ::glance
class { 'glance::api':
known_stores => [$glance_store],
- manage_service => $non_pcmk_start,
- enabled => $non_pcmk_start,
+ manage_service => false,
+ enabled => false,
}
class { '::glance::registry' :
sync_db => $sync_db,
- manage_service => $non_pcmk_start,
- enabled => $non_pcmk_start,
+ manage_service => false,
+ enabled => false,
}
include join(['::glance::backend::', $glance_backend])
@@ -505,16 +498,16 @@ if hiera('step') >= 3 {
include ::cinder
class { '::cinder::api':
sync_db => $sync_db,
- manage_service => $non_pcmk_start,
- enabled => $non_pcmk_start,
+ manage_service => false,
+ enabled => false,
}
class { '::cinder::scheduler' :
- manage_service => $non_pcmk_start,
- enabled => $non_pcmk_start,
+ manage_service => false,
+ enabled => false,
}
class { '::cinder::volume' :
- manage_service => $non_pcmk_start,
- enabled => $non_pcmk_start,
+ manage_service => false,
+ enabled => false,
}
include ::cinder::glance
class {'cinder::setup_test_volume':
@@ -697,5 +690,75 @@ if hiera('step') >= 3 {
} #END STEP 3
if hiera('step') >= 4 {
- # TODO: pacemaker::resource::service for OpenStack services go here
+ if $pacemaker_master {
+
+ # Cinder
+ pacemaker::resource::service { $::cinder::params::api_service :
+ clone_params => "interleave=true",
+ }
+ pacemaker::resource::service { $::cinder::params::scheduler_service :
+ clone_params => "interleave=true",
+ }
+ pacemaker::resource::service { $::cinder::params::volume_service : }
+
+ 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]],
+ }
+ 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]],
+ }
+
+ }
+
+ # Glance
+ pacemaker::resource::service { $::glance::params::registry_service_name :
+ clone_params => "interleave=true",
+ }
+ pacemaker::resource::service { $::glance::params::api_service_name :
+ clone_params => "interleave=true",
+ }
+
+ pacemaker::constraint::base { 'glance-registry-then-glance-api-constraint':
+ constraint_type => "order",
+ first_resource => "${::glance::params::registry_service_name}-clone",
+ second_resource => "${::glance::params::api_service_name}-clone",
+ first_action => "start",
+ second_action => "start",
+ require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],
+ Pacemaker::Resource::Service[$::glance::params::api_service_name]],
+ }
+ pacemaker::constraint::colocation { 'glance-registry-with-glance-api-colocation':
+ source => "${::glance::params::registry_service_name}-clone",
+ target => "${::glance::params::api_service_name}-clone",
+ score => "INFINITY",
+ require => [Pacemaker::Resource::Service[$::glance::params::registry_service_name],
+ Pacemaker::Resource::Service[$::glance::params::api_service_name]],
+ }
+
} #END STEP 4