summaryrefslogtreecommitdiffstats
path: root/manifests/profile/pacemaker/nova
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/profile/pacemaker/nova')
-rw-r--r--manifests/profile/pacemaker/nova/api.pp53
-rw-r--r--manifests/profile/pacemaker/nova/conductor.pp41
-rw-r--r--manifests/profile/pacemaker/nova/consoleauth.pp51
-rw-r--r--manifests/profile/pacemaker/nova/scheduler.pp18
-rw-r--r--manifests/profile/pacemaker/nova/vncproxy.pp18
5 files changed, 152 insertions, 29 deletions
diff --git a/manifests/profile/pacemaker/nova/api.pp b/manifests/profile/pacemaker/nova/api.pp
index 5d8e11f..188beda 100644
--- a/manifests/profile/pacemaker/nova/api.pp
+++ b/manifests/profile/pacemaker/nova/api.pp
@@ -18,31 +18,70 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to downcase(hiera('bootstrap_nodeid'))
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to downcase(hiera('bootstrap_nodeid'))
-#
class tripleo::profile::pacemaker::nova::api (
- $step = hiera('step'),
$pacemaker_master = downcase(hiera('bootstrap_nodeid')),
+ $step = hiera('step'),
) {
include ::nova::params
include ::tripleo::profile::pacemaker::nova
- class { '::tripleo::profile::base::nova::api':
- sync_db => (downcase($::hostname) == $pacemaker_master),
+ Service<| title == 'nova-api' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
}
+ include ::tripleo::profile::base::nova::api
+
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::api_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'nova-vncproxy-then-nova-api-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::vncproxy_service_name}-clone",
+ second_resource => "${::nova::params::api_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+ Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-api-with-nova-vncproxy-colocation':
+ source => "${::nova::params::api_service_name}-clone",
+ target => "${::nova::params::vncproxy_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+ Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+ }
+ pacemaker::constraint::base { 'nova-api-then-nova-scheduler-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::api_service_name}-clone",
+ second_resource => "${::nova::params::scheduler_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+ Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-scheduler-with-nova-api-colocation':
+ source => "${::nova::params::scheduler_service_name}-clone",
+ target => "${::nova::params::api_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+ Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+ }
+
}
}
diff --git a/manifests/profile/pacemaker/nova/conductor.pp b/manifests/profile/pacemaker/nova/conductor.pp
index 76dc462..f2605cb 100644
--- a/manifests/profile/pacemaker/nova/conductor.pp
+++ b/manifests/profile/pacemaker/nova/conductor.pp
@@ -18,28 +18,59 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::conductor (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::conductor
+ Service<| title == 'nova-conductor' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::conductor_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'nova-scheduler-then-nova-conductor-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::scheduler_service_name}-clone",
+ second_resource => "${::nova::params::conductor_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-conductor-with-nova-scheduler-colocation':
+ source => "${::nova::params::conductor_service_name}-clone",
+ target => "${::nova::params::scheduler_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+ }
+
+
+ # If Service['nova-compute'] is in catalog, make sure we start it after
+ # nova-conductor pcmk resource.
+ # Also make sure to restart nova-compute if nova-conductor pcmk resource changed
+ # the state, since nova-compute is deployed at a previous step.
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name] ~> Service<| title == 'nova-compute' |>
}
}
diff --git a/manifests/profile/pacemaker/nova/consoleauth.pp b/manifests/profile/pacemaker/nova/consoleauth.pp
index 54f17b7..6cd8c15 100644
--- a/manifests/profile/pacemaker/nova/consoleauth.pp
+++ b/manifests/profile/pacemaker/nova/consoleauth.pp
@@ -18,28 +18,69 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::consoleauth (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::consoleauth
+ Service<| title == 'nova-consoleauth' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::consoleauth_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':
+ constraint_type => 'order',
+ first_resource => 'openstack-core-clone',
+ second_resource => "${::nova::params::consoleauth_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::colocation { 'nova-consoleauth-with-openstack-core':
+ source => "${::nova::params::consoleauth_service_name}-clone",
+ target => 'openstack-core-clone',
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::base { 'nova-consoleauth-then-nova-vncproxy-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::consoleauth_service_name}-clone",
+ second_resource => "${::nova::params::vncproxy_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-vncproxy-with-nova-consoleauth-colocation':
+ source => "${::nova::params::vncproxy_service_name}-clone",
+ target => "${::nova::params::consoleauth_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+ }
+
}
}
diff --git a/manifests/profile/pacemaker/nova/scheduler.pp b/manifests/profile/pacemaker/nova/scheduler.pp
index 6516394..8c387d2 100644
--- a/manifests/profile/pacemaker/nova/scheduler.pp
+++ b/manifests/profile/pacemaker/nova/scheduler.pp
@@ -18,24 +18,30 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::scheduler (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::scheduler
+ Service<| title == 'nova-scheduler' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::scheduler_service_name:
clone_params => 'interleave=true',
diff --git a/manifests/profile/pacemaker/nova/vncproxy.pp b/manifests/profile/pacemaker/nova/vncproxy.pp
index 7f7d095..3652daa 100644
--- a/manifests/profile/pacemaker/nova/vncproxy.pp
+++ b/manifests/profile/pacemaker/nova/vncproxy.pp
@@ -18,24 +18,30 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::vncproxy (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::vncproxy
+ Service<| title == 'nova-vncproxy' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::vncproxy_service_name:
clone_params => 'interleave=true',