aboutsummaryrefslogtreecommitdiffstats
path: root/manifests/profile/base
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/profile/base')
-rw-r--r--manifests/profile/base/ceilometer/collector.pp18
-rw-r--r--manifests/profile/base/cinder/api.pp17
-rw-r--r--manifests/profile/base/database/mysql.pp85
-rw-r--r--manifests/profile/base/glance/registry.pp15
-rw-r--r--manifests/profile/base/gnocchi/api.pp15
-rw-r--r--manifests/profile/base/haproxy.pp50
-rw-r--r--manifests/profile/base/heat.pp10
-rw-r--r--manifests/profile/base/heat/engine.pp15
-rw-r--r--manifests/profile/base/ironic.pp19
-rw-r--r--manifests/profile/base/keystone.pp31
-rw-r--r--manifests/profile/base/manila/scheduler.pp17
-rw-r--r--manifests/profile/base/mistral.pp39
-rw-r--r--manifests/profile/base/mistral/api.pp36
-rw-r--r--manifests/profile/base/mistral/engine.pp46
-rw-r--r--manifests/profile/base/mistral/executor.pp36
-rw-r--r--manifests/profile/base/neutron.pp4
-rw-r--r--manifests/profile/base/neutron/plugins/ml2.pp15
-rw-r--r--manifests/profile/base/neutron/plugins/nuage.pp19
-rw-r--r--manifests/profile/base/neutron/plugins/opencontrail.pp19
-rw-r--r--manifests/profile/base/neutron/plugins/plumgrid.pp19
-rw-r--r--manifests/profile/base/neutron/server.pp32
-rw-r--r--manifests/profile/base/nova/api.pp23
-rw-r--r--manifests/profile/base/nova/compute.pp3
-rw-r--r--manifests/profile/base/pacemaker.pp93
-rw-r--r--manifests/profile/base/sahara/engine.pp18
-rw-r--r--manifests/profile/base/trove/api.pp17
26 files changed, 600 insertions, 111 deletions
diff --git a/manifests/profile/base/ceilometer/collector.pp b/manifests/profile/base/ceilometer/collector.pp
index c294e56..b0a986f 100644
--- a/manifests/profile/base/ceilometer/collector.pp
+++ b/manifests/profile/base/ceilometer/collector.pp
@@ -18,20 +18,24 @@
#
# === 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')
-#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
class tripleo::profile::base::ceilometer::collector (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
$ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
# MongoDB
diff --git a/manifests/profile/base/cinder/api.pp b/manifests/profile/base/cinder/api.pp
index a2da25f..ad970f6 100644
--- a/manifests/profile/base/cinder/api.pp
+++ b/manifests/profile/base/cinder/api.pp
@@ -18,19 +18,24 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*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::base::cinder::api (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
class { '::tripleo::profile::base::cinder':
pacemaker_master => $sync_db,
diff --git a/manifests/profile/base/database/mysql.pp b/manifests/profile/base/database/mysql.pp
new file mode 100644
index 0000000..27df6e4
--- /dev/null
+++ b/manifests/profile/base/database/mysql.pp
@@ -0,0 +1,85 @@
+# 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::database::mysql
+#
+# MySQL profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*mysql_server_options*]
+# (Optional) Extras options to deploy MySQL. Useful when deploying Galera cluster.
+# Should be an hash.
+# Defaults to {}
+#
+# [*manage_resources*]
+# (Optional) Whether or not manage root user, root my.cnf, and service.
+# Defaults to true
+#
+# [*remove_default_accounts*]
+# (Optional) Whether or not remove default MySQL accounts.
+# Defaults to true
+#
+class tripleo::profile::base::database::mysql (
+ $step = hiera('step'),
+ $mysql_server_options = {},
+ $manage_resources = true,
+ $remove_default_accounts = true,
+) {
+
+ validate_hash($mysql_server_options)
+
+ # non-ha scenario
+ if $manage_resources {
+ $mysql_step = 2
+ } else {
+ # ha scenario
+ $mysql_step = 1
+ }
+ if $step >= $mysql_step {
+ if str2bool(hiera('enable_galera', true)) {
+ $mysql_config_file = '/etc/my.cnf.d/galera.cnf'
+ } else {
+ $mysql_config_file = '/etc/my.cnf.d/server.cnf'
+ }
+ # TODO Galara
+ # FIXME: due to https://bugzilla.redhat.com/show_bug.cgi?id=1298671 we
+ # set bind-address to a hostname instead of an ip address; to move Mysql
+ # from internal_api on another network we'll have to customize both
+ # MysqlNetwork and ControllerHostnameResolveNetwork in ServiceNetMap
+ $mysql_server_default = {
+ 'mysqld' => {
+ 'bind-address' => $::hostname,
+ 'max_connections' => hiera('mysql_max_connections'),
+ 'open_files_limit' => '-1',
+ }
+ }
+ $mysql_server_options_real = deep_merge($mysql_server_default, $mysql_server_options)
+ class { '::mysql::server':
+ config_file => $mysql_config_file,
+ override_options => $mysql_server_options_real,
+ create_root_user => $manage_resources,
+ create_root_my_cnf => $manage_resources,
+ service_manage => $manage_resources,
+ service_enabled => $manage_resources,
+ remove_default_accounts => $remove_default_accounts,
+ }
+ }
+
+}
diff --git a/manifests/profile/base/glance/registry.pp b/manifests/profile/base/glance/registry.pp
index 774f646..ce89d12 100644
--- a/manifests/profile/base/glance/registry.pp
+++ b/manifests/profile/base/glance/registry.pp
@@ -18,9 +18,9 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*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
@@ -30,12 +30,17 @@
# [*glance_backend*]
# (Optional) Glance backend(s) to use.
# Defaults to downcase(hiera('glance_backend', 'swift'))
-#
+
class tripleo::profile::base::glance::registry (
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::glance::db::mysql
diff --git a/manifests/profile/base/gnocchi/api.pp b/manifests/profile/base/gnocchi/api.pp
index d415ee9..870a9bb 100644
--- a/manifests/profile/base/gnocchi/api.pp
+++ b/manifests/profile/base/gnocchi/api.pp
@@ -22,20 +22,25 @@
# (Optional) Gnocchi backend string file, swift or rbd
# Defaults to swift
#
+# [*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')
-#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to undef
class tripleo::profile::base::gnocchi::api (
$gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift')),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $sync_db = true,
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::gnocchi
diff --git a/manifests/profile/base/haproxy.pp b/manifests/profile/base/haproxy.pp
index 31a5415..8e73ce3 100644
--- a/manifests/profile/base/haproxy.pp
+++ b/manifests/profile/base/haproxy.pp
@@ -27,13 +27,59 @@
# (Optional) Whether or not loadbalancer is enabled.
# Defaults to hiera('enable_load_balancer', true).
#
+# [*generate_service_certificates*]
+# (Optional) Whether or not certmonger will generate certificates for
+# HAProxy. This could be as many as specified by the $certificates_specs
+# variable.
+# Note that this doesn't configure the certificates in haproxy, it merely
+# creates the certificates.
+# Defaults to hiera('generate_service_certificate', false).
+#
+# [*certmonger_ca*]
+# (Optional) The CA that certmonger will use to generate the certificates.
+# Defaults to hiera('certmonger_ca', 'local').
+#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# tripleo::profile::base::haproxy::certificates_specs:
+# undercloud-haproxy-public-cert:
+# service_pem: <haproxy ready pem file>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# hostname: <undercloud fqdn>
+# postsave_cmd: <command to update certificate on resubmit>
+# principal: "haproxy/<undercloud fqdn>"
+# Defaults to {}.
+#
class tripleo::profile::base::haproxy (
- $enable_load_balancer = hiera('enable_load_balancer', true),
- $step = hiera('step'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $step = hiera('step'),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $certmonger_ca = hiera('certmonger_ca', 'local'),
+ $certificates_specs = {},
) {
if $step >= 1 {
if $enable_load_balancer {
+ if str2bool($generate_service_certificates) {
+ include ::certmonger
+ # This is only needed for certmonger's local CA. For any other CA this
+ # operation (trusting the CA) should be done by the deployer.
+ if $certmonger_ca == 'local' {
+ include ::tripleo::certmonger::ca::local
+ }
+
+ Certmonger_certificate {
+ ca => $certmonger_ca,
+ ensure => 'present',
+ wait => true,
+ require => Class['::certmonger'],
+ }
+ create_resources('::tripleo::certmonger::haproxy', $certificates_specs)
+ }
+
include ::tripleo::haproxy
}
}
diff --git a/manifests/profile/base/heat.pp b/manifests/profile/base/heat.pp
index 0fc30d8..1311f20 100644
--- a/manifests/profile/base/heat.pp
+++ b/manifests/profile/base/heat.pp
@@ -42,6 +42,16 @@ class tripleo::profile::base::heat (
$manage_db_purge = hiera('heat_enable_db_purge', true),
) {
+ # Domain resources will be created at step5 on the pacemaker_master so we
+ # configure heat.conf at step3 and 4 but actually create the domain later.
+ if $step == 3 or $step == 4 {
+ class { '::heat::keystone::domain':
+ manage_domain => false,
+ manage_user => false,
+ manage_role => false,
+ }
+ }
+
if $step >= 4 {
class { '::heat' :
notification_driver => $notification_driver,
diff --git a/manifests/profile/base/heat/engine.pp b/manifests/profile/base/heat/engine.pp
index b48837c..1fd627f 100644
--- a/manifests/profile/base/heat/engine.pp
+++ b/manifests/profile/base/heat/engine.pp
@@ -18,19 +18,24 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to undef
+# [*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::base::heat::engine (
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::heat::db::mysql
diff --git a/manifests/profile/base/ironic.pp b/manifests/profile/base/ironic.pp
index 139654b..dd30dd7 100644
--- a/manifests/profile/base/ironic.pp
+++ b/manifests/profile/base/ironic.pp
@@ -18,18 +18,23 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
-#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
+
class tripleo::profile::base::ironic (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 {
include ::ironic
diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp
index 706b78f..9617c11 100644
--- a/manifests/profile/base/keystone.pp
+++ b/manifests/profile/base/keystone.pp
@@ -18,34 +18,33 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
-# [*manage_roles*]
-# (Optional) whether to create keystone admin role
-# Defaults to true
-#
-# [*manage_endpoint*]
-# (Optional) Whether to create keystone endpoints
-# Defaults to true
-#
# [*manage_db_purge*]
# (Optional) Whether keystone token flushing should be enabled
# Defaults to hiera('keystone_enable_db_purge', true)
#
+# [*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::base::keystone (
- $sync_db = true,
- $manage_roles = true,
- $manage_endpoint = true,
$manage_db_purge = hiera('keystone_enable_db_purge', true),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ $manage_roles = true
+ $manage_endpoint = true
+ } else {
+ $sync_db = false
+ $manage_roles = false
+ $manage_endpoint = false
+ }
if $step >= 3 and $sync_db {
include ::keystone::db::mysql
diff --git a/manifests/profile/base/manila/scheduler.pp b/manifests/profile/base/manila/scheduler.pp
index b6d7593..3d39c4a 100644
--- a/manifests/profile/base/manila/scheduler.pp
+++ b/manifests/profile/base/manila/scheduler.pp
@@ -18,19 +18,24 @@
#
# === 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')
-#
-# [*sync_db*]
-# (Optiona) Whether to run db sync.
-# Defaults to true.
-#
+
class tripleo::profile::base::manila::scheduler (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $sync_db = true,
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::manila::db::mysql
diff --git a/manifests/profile/base/mistral.pp b/manifests/profile/base/mistral.pp
new file mode 100644
index 0000000..42507b9
--- /dev/null
+++ b/manifests/profile/base/mistral.pp
@@ -0,0 +1,39 @@
+# 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::mistral
+#
+# Mistral 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::mistral (
+ $sync_db = true,
+ $step = hiera('step'),
+) {
+
+ if $step >= 3 {
+ include ::mistral
+ include ::mistral::config
+ }
+}
diff --git a/manifests/profile/base/mistral/api.pp b/manifests/profile/base/mistral/api.pp
new file mode 100644
index 0000000..b955c8d
--- /dev/null
+++ b/manifests/profile/base/mistral/api.pp
@@ -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::mistral::api
+#
+# Mistral API 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::mistral::api (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 4 {
+ include ::mistral::api
+ }
+}
+
diff --git a/manifests/profile/base/mistral/engine.pp b/manifests/profile/base/mistral/engine.pp
new file mode 100644
index 0000000..141cbad
--- /dev/null
+++ b/manifests/profile/base/mistral/engine.pp
@@ -0,0 +1,46 @@
+# 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::mistral::engine
+#
+# Mistral Engine profile for tripleo
+#
+# === Parameters
+#
+# [*sync_db*]
+# (Optional) Whether to run db sync
+# Defaults to undef
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::mistral::engine (
+ $sync_db = true,
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 3 and $sync_db {
+ include ::mistral::db::mysql
+ include ::mistral::db::sync
+ }
+
+ if $step >= 4 {
+ include ::mistral::engine
+ }
+
+}
diff --git a/manifests/profile/base/mistral/executor.pp b/manifests/profile/base/mistral/executor.pp
new file mode 100644
index 0000000..d7b5776
--- /dev/null
+++ b/manifests/profile/base/mistral/executor.pp
@@ -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::mistral::executor
+#
+# Mistral Executor 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::mistral::executor (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 4 {
+ include ::mistral::executor
+ }
+
+}
diff --git a/manifests/profile/base/neutron.pp b/manifests/profile/base/neutron.pp
index 1ee2d90..7b07b1f 100644
--- a/manifests/profile/base/neutron.pp
+++ b/manifests/profile/base/neutron.pp
@@ -23,9 +23,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
- if hiera('step') >= 3 {
+ if $step >= 3 {
include ::neutron
include ::neutron::config
}
diff --git a/manifests/profile/base/neutron/plugins/ml2.pp b/manifests/profile/base/neutron/plugins/ml2.pp
index 8218c9e..0193615 100644
--- a/manifests/profile/base/neutron/plugins/ml2.pp
+++ b/manifests/profile/base/neutron/plugins/ml2.pp
@@ -22,20 +22,25 @@
# (Optional) The mechanism drivers to use with the Ml2 plugin
# Defaults to hiera('neutron::plugins::ml2::mechanism_drivers')
#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
+# [*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::base::neutron::plugins::ml2 (
$mechanism_drivers = hiera('neutron::plugins::ml2::mechanism_drivers'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/plugins/nuage.pp b/manifests/profile/base/neutron/plugins/nuage.pp
index 5d3661e..4ada340 100644
--- a/manifests/profile/base/neutron/plugins/nuage.pp
+++ b/manifests/profile/base/neutron/plugins/nuage.pp
@@ -16,19 +16,24 @@
#
# Nuage Neutron profile for tripleo
#
+# [*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')
-#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
+
class tripleo::profile::base::neutron::plugins::nuage (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/plugins/opencontrail.pp b/manifests/profile/base/neutron/plugins/opencontrail.pp
index 96d7421..6cd710a 100644
--- a/manifests/profile/base/neutron/plugins/opencontrail.pp
+++ b/manifests/profile/base/neutron/plugins/opencontrail.pp
@@ -16,19 +16,24 @@
#
# Opencontrail Neutron profile for tripleo
#
+# [*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')
-#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
+
class tripleo::profile::base::neutron::plugins::opencontrail (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/plugins/plumgrid.pp b/manifests/profile/base/neutron/plugins/plumgrid.pp
index f5cd273..efd75ac 100644
--- a/manifests/profile/base/neutron/plugins/plumgrid.pp
+++ b/manifests/profile/base/neutron/plugins/plumgrid.pp
@@ -18,19 +18,24 @@
#
# === 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')
-#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
+
class tripleo::profile::base::neutron::plugins::plumgrid (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/server.pp b/manifests/profile/base/neutron/server.pp
index 8b5539e..5a1b377 100644
--- a/manifests/profile/base/neutron/server.pp
+++ b/manifests/profile/base/neutron/server.pp
@@ -18,24 +18,46 @@
#
# === 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::base::neutron::server (
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
- if $step >= 3 {
+ if $step >= 3 and $sync_db {
include ::neutron::db::mysql
}
- if $step >= 4 {
+ # We start neutron-server on the bootstrap node first, because
+ # it will try to populate tables and we need to make sure this happens
+ # before it starts on other nodes
+ if $step >= 4 and $sync_db {
include ::neutron::server::notifications
- include ::neutron::server
+ # We need to override the hiera value neutron::server::sync_db which is set
+ # to true
+ class { '::neutron::server':
+ sync_db => $sync_db,
+ }
+ }
+ if $step >= 5 and !$sync_db {
+ include ::neutron::server::notifications
+ class { '::neutron::server':
+ sync_db => $sync_db,
+ }
}
-
}
diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp
index 3b36c57..285e0b7 100644
--- a/manifests/profile/base/nova/api.pp
+++ b/manifests/profile/base/nova/api.pp
@@ -16,21 +16,24 @@
#
# Nova API 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')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
class tripleo::profile::base::nova::api (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::nova
@@ -46,5 +49,11 @@ class tripleo::profile::base::nova::api (
}
include ::nova::network::neutron
}
+
+ if $step >= 5 {
+ if hiera('nova_enable_db_purge', true) {
+ include ::nova::cron::archive_deleted_rows
+ }
+ }
}
diff --git a/manifests/profile/base/nova/compute.pp b/manifests/profile/base/nova/compute.pp
index c734906..076996a 100644
--- a/manifests/profile/base/nova/compute.pp
+++ b/manifests/profile/base/nova/compute.pp
@@ -38,6 +38,9 @@ class tripleo::profile::base::nova::compute (
# deploy basic bits for nova-compute
include ::nova::compute
+ # If Service['nova-conductor'] is in catalog, make sure we start it
+ # before nova-compute.
+ Service<| title == 'nova-conductor' |> -> Service['nova-compute']
# deploy bits to connect nova compute to neutron
include ::nova::network::neutron
diff --git a/manifests/profile/base/pacemaker.pp b/manifests/profile/base/pacemaker.pp
new file mode 100644
index 0000000..1785656
--- /dev/null
+++ b/manifests/profile/base/pacemaker.pp
@@ -0,0 +1,93 @@
+# 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::pacemaker
+#
+# Pacemaker 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::pacemaker (
+ $step = hiera('step'),
+) {
+
+ Pcmk_resource <| |> {
+ tries => 10,
+ try_sleep => 3,
+ }
+
+ if $::hostname == downcase(hiera('bootstrap_nodeid')) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ $enable_fencing = str2bool(hiera('enable_fencing', false)) and $step >= 5
+
+ if $step >= 1 {
+ $pacemaker_cluster_members = downcase(regsubst(hiera('controller_node_names'), ',', ' ', 'G'))
+ $corosync_ipv6 = str2bool(hiera('corosync_ipv6', false))
+ if $corosync_ipv6 {
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000), '--ipv6' => '' }
+ } else {
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000) }
+ }
+ class { '::pacemaker':
+ hacluster_pwd => hiera('hacluster_pwd'),
+ } ->
+ class { '::pacemaker::corosync':
+ cluster_members => $pacemaker_cluster_members,
+ setup_cluster => $pacemaker_master,
+ cluster_setup_extras => $cluster_setup_extras,
+ }
+ class { '::pacemaker::stonith':
+ disable => !$enable_fencing,
+ }
+ if $enable_fencing {
+ include ::tripleo::fencing
+
+ # enable stonith after all Pacemaker resources have been created
+ Pcmk_resource<||> -> Class['tripleo::fencing']
+ Pcmk_constraint<||> -> Class['tripleo::fencing']
+ Exec <| tag == 'pacemaker_constraint' |> -> Class['tripleo::fencing']
+ # enable stonith after all fencing devices have been created
+ Class['tripleo::fencing'] -> Class['pacemaker::stonith']
+ }
+
+ # FIXME(gfidente): sets 200secs as default start timeout op
+ # param; until we can use pcmk global defaults we'll still
+ # need to add it to every resource which redefines op params
+ Pacemaker::Resource::Service {
+ op_params => 'start timeout=200s stop timeout=200s',
+ }
+ }
+
+ if $step >= 2 {
+ if $pacemaker_master {
+ include ::pacemaker::resource_defaults
+
+ # Create an openstack-core dummy resource. See RHBZ 1290121
+ pacemaker::resource::ocf { 'openstack-core':
+ ocf_agent_name => 'heartbeat:Dummy',
+ clone_params => 'interleave=true',
+ }
+ }
+ }
+
+}
diff --git a/manifests/profile/base/sahara/engine.pp b/manifests/profile/base/sahara/engine.pp
index 8fa1f5f..f792a96 100644
--- a/manifests/profile/base/sahara/engine.pp
+++ b/manifests/profile/base/sahara/engine.pp
@@ -18,19 +18,25 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*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::base::sahara::engine (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
if $step >= 3 and $sync_db {
include ::sahara::db::mysql
}
diff --git a/manifests/profile/base/trove/api.pp b/manifests/profile/base/trove/api.pp
index a98f114..06edf7f 100644
--- a/manifests/profile/base/trove/api.pp
+++ b/manifests/profile/base/trove/api.pp
@@ -18,19 +18,24 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*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::base::trove::api (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::trove::db::mysql