summaryrefslogtreecommitdiffstats
path: root/manifests/profile
diff options
context:
space:
mode:
Diffstat (limited to 'manifests/profile')
-rw-r--r--manifests/profile/base/cinder.pp52
-rw-r--r--manifests/profile/base/cinder/api.pp49
-rw-r--r--manifests/profile/base/cinder/scheduler.pp36
-rw-r--r--manifests/profile/base/cinder/volume.pp118
-rw-r--r--manifests/profile/base/cinder/volume/dellsc.pp51
-rw-r--r--manifests/profile/base/cinder/volume/eqlx.pp51
-rw-r--r--manifests/profile/base/cinder/volume/iscsi.pp62
-rw-r--r--manifests/profile/base/cinder/volume/netapp.pp66
-rw-r--r--manifests/profile/base/cinder/volume/nfs.pp62
-rw-r--r--manifests/profile/base/cinder/volume/rbd.pp66
-rw-r--r--manifests/profile/base/database/mongodb.pp54
-rw-r--r--manifests/profile/base/database/mongodbcommon.pp52
-rw-r--r--manifests/profile/base/database/redis.pp57
-rw-r--r--manifests/profile/base/glance/api.pp15
-rw-r--r--manifests/profile/base/glance/registry.pp13
-rw-r--r--manifests/profile/base/haproxy.pp42
-rw-r--r--manifests/profile/base/heat.pp72
-rw-r--r--manifests/profile/base/heat/api.pp35
-rw-r--r--manifests/profile/base/heat/api_cfn.pp35
-rw-r--r--manifests/profile/base/heat/api_cloudwatch.pp35
-rw-r--r--manifests/profile/base/heat/engine.pp44
-rw-r--r--manifests/profile/base/keepalived.pp42
-rw-r--r--manifests/profile/base/keystone.pp12
-rw-r--r--manifests/profile/base/manila/api.pp35
-rw-r--r--manifests/profile/base/manila/scheduler.pp46
-rw-r--r--manifests/profile/base/manila/share.pp35
-rw-r--r--manifests/profile/base/memcached.pp34
-rw-r--r--manifests/profile/base/neutron.pp9
-rw-r--r--manifests/profile/base/neutron/dhcp.pp15
-rw-r--r--manifests/profile/base/neutron/l3.pp15
-rw-r--r--manifests/profile/base/neutron/metadata.pp15
-rw-r--r--manifests/profile/base/neutron/midonet.pp4
-rw-r--r--manifests/profile/base/neutron/ml2.pp7
-rw-r--r--manifests/profile/base/neutron/ovs.pp15
-rw-r--r--manifests/profile/base/neutron/server.pp27
-rw-r--r--manifests/profile/base/nova.pp44
-rw-r--r--manifests/profile/base/nova/api.pp43
-rw-r--r--manifests/profile/base/nova/compute.pp35
-rw-r--r--manifests/profile/base/nova/conductor.pp35
-rw-r--r--manifests/profile/base/nova/consoleauth.pp35
-rw-r--r--manifests/profile/base/nova/scheduler.pp36
-rw-r--r--manifests/profile/base/nova/vncproxy.pp35
-rw-r--r--manifests/profile/base/rabbitmq.pp96
-rw-r--r--manifests/profile/base/sahara.pp31
-rw-r--r--manifests/profile/base/sahara/api.pp33
-rw-r--r--manifests/profile/base/sahara/engine.pp42
-rw-r--r--manifests/profile/base/swift/proxy.pp45
-rw-r--r--manifests/profile/pacemaker/cinder/api.pp67
-rw-r--r--manifests/profile/pacemaker/cinder/scheduler.pp72
-rw-r--r--manifests/profile/pacemaker/cinder/volume.pp70
-rw-r--r--manifests/profile/pacemaker/database/mongodb.pp74
-rw-r--r--manifests/profile/pacemaker/database/mongodbvalidator.pp37
-rw-r--r--manifests/profile/pacemaker/database/redis.pp63
-rw-r--r--manifests/profile/pacemaker/glance.pp7
-rw-r--r--manifests/profile/pacemaker/haproxy.pp99
-rw-r--r--manifests/profile/pacemaker/heat.pp132
-rw-r--r--manifests/profile/pacemaker/keystone.pp2
-rw-r--r--manifests/profile/pacemaker/manila.pp162
-rw-r--r--manifests/profile/pacemaker/memcached.pp61
-rw-r--r--manifests/profile/pacemaker/neutron.pp5
-rw-r--r--manifests/profile/pacemaker/neutron/dhcp.pp5
-rw-r--r--manifests/profile/pacemaker/neutron/l3.pp5
-rw-r--r--manifests/profile/pacemaker/neutron/metadata.pp5
-rw-r--r--manifests/profile/pacemaker/neutron/ml2.pp15
-rw-r--r--manifests/profile/pacemaker/neutron/ovs.pp6
-rw-r--r--manifests/profile/pacemaker/neutron/server.pp37
-rw-r--r--manifests/profile/pacemaker/nova.pp40
-rw-r--r--manifests/profile/pacemaker/nova/api.pp48
-rw-r--r--manifests/profile/pacemaker/nova/conductor.pp45
-rw-r--r--manifests/profile/pacemaker/nova/consoleauth.pp45
-rw-r--r--manifests/profile/pacemaker/nova/scheduler.pp45
-rw-r--r--manifests/profile/pacemaker/nova/vncproxy.pp45
-rw-r--r--manifests/profile/pacemaker/rabbitmq.pp67
-rw-r--r--manifests/profile/pacemaker/sahara.pp81
74 files changed, 3054 insertions, 174 deletions
diff --git a/manifests/profile/base/cinder.pp b/manifests/profile/base/cinder.pp
new file mode 100644
index 0000000..27dc277
--- /dev/null
+++ b/manifests/profile/base/cinder.pp
@@ -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
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/api.pp b/manifests/profile/base/cinder/api.pp
new file mode 100644
index 0000000..a2da25f
--- /dev/null
+++ b/manifests/profile/base/cinder/api.pp
@@ -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
+ }
+
+}
diff --git a/manifests/profile/base/cinder/scheduler.pp b/manifests/profile/base/cinder/scheduler.pp
new file mode 100644
index 0000000..68f2813
--- /dev/null
+++ b/manifests/profile/base/cinder/scheduler.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::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
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume.pp b/manifests/profile/base/cinder/volume.pp
new file mode 100644
index 0000000..96cd06a
--- /dev/null
+++ b/manifests/profile/base/cinder/volume.pp
@@ -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,
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/dellsc.pp b/manifests/profile/base/cinder/volume/dellsc.pp
new file mode 100644
index 0000000..6f7922d
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/dellsc.pp
@@ -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),
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/eqlx.pp b/manifests/profile/base/cinder/volume/eqlx.pp
new file mode 100644
index 0000000..a18270d
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/eqlx.pp
@@ -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),
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/iscsi.pp b/manifests/profile/base/cinder/volume/iscsi.pp
new file mode 100644
index 0000000..d857caa
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/iscsi.pp
@@ -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,
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/netapp.pp b/manifests/profile/base/cinder/volume/netapp.pp
new file mode 100644
index 0000000..bae541f
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/netapp.pp
@@ -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),
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/nfs.pp b/manifests/profile/base/cinder/volume/nfs.pp
new file mode 100644
index 0000000..a26c50e
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/nfs.pp
@@ -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',
+ }
+ }
+
+}
diff --git a/manifests/profile/base/cinder/volume/rbd.pp b/manifests/profile/base/cinder/volume/rbd.pp
new file mode 100644
index 0000000..6c8341a
--- /dev/null
+++ b/manifests/profile/base/cinder/volume/rbd.pp
@@ -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,
+ }
+ }
+
+}
diff --git a/manifests/profile/base/database/mongodb.pp b/manifests/profile/base/database/mongodb.pp
new file mode 100644
index 0000000..4c53c9c
--- /dev/null
+++ b/manifests/profile/base/database/mongodb.pp
@@ -0,0 +1,54 @@
+# 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::mongodb
+#
+# Mongodb profile for tripleo
+#
+# === Parameters
+#
+# [*mongodb_replset*]
+# Mongodb replicaset name
+#
+# [*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::database::mongodb (
+ $mongodb_replset,
+ $bootstrap_node = downcase(hiera('bootstrap_nodeid')),
+ $step = hiera('step'),
+) {
+
+ if $step >= 2 {
+
+ include ::mongodb::globals
+ include ::mongodb::client
+ include ::mongodb::server
+
+ include ::tripleo::profile::base::database::mongodbcommon
+
+ if $bootstrap_node == $::hostname {
+ mongodb_replset { $mongodb_replset :
+ members => $tripleo::profile::base::database::mongodbcommon::mongo_node_ips_with_port_nobr,
+ }
+ }
+
+ }
+}
diff --git a/manifests/profile/base/database/mongodbcommon.pp b/manifests/profile/base/database/mongodbcommon.pp
new file mode 100644
index 0000000..6530730
--- /dev/null
+++ b/manifests/profile/base/database/mongodbcommon.pp
@@ -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::database::mongodb
+#
+# Mongodb profile for tripleo
+#
+# === Parameters
+#
+# [*mongodb_node_ips*]
+# List of The mongodb node ip addresses
+#
+# [*mongodb_ipv6_enabled*]
+# A boolean value for mongodb server ipv6 is enabled or not
+# Defaults to false
+#
+class tripleo::profile::base::database::mongodbcommon (
+ $mongodb_node_ips = hiera('mongo_node_ips'),
+ $mongodb_ipv6_enabled = false,
+) {
+
+ $port = '27017'
+
+ # NOTE(gfidente): the following vars are needed on all nodes so they
+ # need to stay out of pacemaker_master conditional.
+ # The addresses mangling will hopefully go away when we'll be able to
+ # configure the connection string via hostnames, until then, we need to pass
+ # the list of IPv6 addresses *with* port and without the brackets as 'members'
+ # argument for the 'mongodb_replset' resource.
+ if str2bool($mongodb_ipv6_enabled) {
+ $mongo_node_ips_with_port_prefixed = prefix($mongodb_node_ips, '[')
+ $mongo_node_ips_with_port = suffix(
+ $mongo_node_ips_with_port_prefixed, "]:${port}")
+ $mongo_node_ips_with_port_nobr = suffix($mongodb_node_ips, ":${port}")
+ } else {
+ $mongo_node_ips_with_port = suffix($mongodb_node_ips, ":${port}")
+ $mongo_node_ips_with_port_nobr = suffix($mongodb_node_ips, ":${port}")
+ }
+ $mongo_node_string = join($mongo_node_ips_with_port, ',')
+
+}
diff --git a/manifests/profile/base/database/redis.pp b/manifests/profile/base/database/redis.pp
new file mode 100644
index 0000000..3a5200c
--- /dev/null
+++ b/manifests/profile/base/database/redis.pp
@@ -0,0 +1,57 @@
+# 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::redis
+#
+# Redis profile for tripleo
+#
+# === Parameters
+#
+# [*redis_node_ips*]
+# (Optional) List of Redis node ips
+# Defaults to hiera('redis_node_ips')
+#
+# [*bootstrap_nodeid*]
+# (Optional) Hostname of Redis master
+# 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::database::redis (
+ $redis_node_ips = hiera('redis_node_ips'),
+ $bootstrap_nodeid = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ if $step >= 2 {
+ if $bootstrap_nodeid == $::hostname {
+ $slaveof = undef
+ } else {
+ $slaveof = "${bootstrap_nodeid} 6379"
+ }
+ class { '::redis' :
+ slaveof => $slaveof,
+ }
+
+ if count($redis_node_ips) > 1 {
+ Class['::tripleo::redis_notification'] -> Service['redis-sentinel']
+ include ::redis::sentinel
+ include ::tripleo::redis_notification
+ }
+ }
+}
diff --git a/manifests/profile/base/glance/api.pp b/manifests/profile/base/glance/api.pp
index 22b4dc9..fd43732 100644
--- a/manifests/profile/base/glance/api.pp
+++ b/manifests/profile/base/glance/api.pp
@@ -18,14 +18,6 @@
#
# === Parameters
#
-# [*manage_service*]
-# (Optional) Whether to manage the glance service
-# Defaults to undef
-#
-# [*enabled*]
-# (Optional) Whether to enable the glance service
-# Defaults to undef
-#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@@ -36,8 +28,6 @@
# Defaults to downcase(hiera('glance_backend', 'swift'))
#
class tripleo::profile::base::glance::api (
- $manage_service = undef,
- $enabled = undef,
$step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
) {
@@ -56,13 +46,10 @@ class tripleo::profile::base::glance::api (
include ::glance
include ::glance::config
class { '::glance::api':
- known_stores => $glance_store,
- manage_service => $manage_service,
- enabled => $enabled,
+ stores => $glance_store,
}
include ::glance::notify::rabbitmq
include join(['::glance::backend::', $glance_backend])
}
}
-
diff --git a/manifests/profile/base/glance/registry.pp b/manifests/profile/base/glance/registry.pp
index b77b356..774f646 100644
--- a/manifests/profile/base/glance/registry.pp
+++ b/manifests/profile/base/glance/registry.pp
@@ -22,14 +22,6 @@
# (Optional) Whether to run db sync
# Defaults to true
#
-# [*manage_service*]
-# (Optional) Whether to manage the glance service
-# Defaults to undef
-#
-# [*enabled*]
-# (Optional) Whether to enable the glance service
-# Defaults to undef
-#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@@ -41,8 +33,6 @@
#
class tripleo::profile::base::glance::registry (
$sync_db = true,
- $manage_service = undef,
- $enabled = undef,
$step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
) {
@@ -57,12 +47,9 @@ class tripleo::profile::base::glance::registry (
include ::glance::config
class { '::glance::registry' :
sync_db => $sync_db,
- manage_service => $manage_service,
- enabled => $enabled,
}
include ::glance::notify::rabbitmq
include join(['::glance::backend::', $glance_backend])
}
}
-
diff --git a/manifests/profile/base/haproxy.pp b/manifests/profile/base/haproxy.pp
new file mode 100644
index 0000000..31a5415
--- /dev/null
+++ b/manifests/profile/base/haproxy.pp
@@ -0,0 +1,42 @@
+# 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::haproxy
+#
+# Loadbalancer profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*enable_load_balancer*]
+# (Optional) Whether or not loadbalancer is enabled.
+# Defaults to hiera('enable_load_balancer', true).
+#
+class tripleo::profile::base::haproxy (
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $step = hiera('step'),
+) {
+
+ if $step >= 1 {
+ if $enable_load_balancer {
+ include ::tripleo::haproxy
+ }
+ }
+
+}
+
diff --git a/manifests/profile/base/heat.pp b/manifests/profile/base/heat.pp
new file mode 100644
index 0000000..0fc30d8
--- /dev/null
+++ b/manifests/profile/base/heat.pp
@@ -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::base::heat
+#
+# Heat profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*notification_driver*]
+# (Optional) Heat notification driver to use.
+# Defaults to 'messaging'
+#
+# [*bootstrap_master*]
+# (Optional) The hostname of the node responsible for bootstrapping
+# Defaults to downcase(hiera('bootstrap_nodeid'))
+#
+# [*manage_db_purge*]
+# (Optional) Whether keystone token flushing should be enabled
+# Defaults to hiera('keystone_enable_db_purge', true)
+#
+class tripleo::profile::base::heat (
+ $step = hiera('step'),
+ $notification_driver = 'messaging',
+ $bootstrap_master = downcase(hiera('bootstrap_nodeid')),
+ $manage_db_purge = hiera('heat_enable_db_purge', true),
+) {
+
+ if $step >= 4 {
+ class { '::heat' :
+ notification_driver => $notification_driver,
+ }
+ include ::heat::config
+ }
+
+ if $step >= 5 {
+ if $manage_db_purge {
+ include ::heat::cron::purge_deleted
+ }
+ if $bootstrap_master == $::hostname {
+ # Class ::heat::keystone::domain has to run on bootstrap node
+ # because it creates DB entities via API calls.
+ include ::heat::keystone::domain
+
+ Class['::keystone::roles::admin'] -> Class['::heat::keystone::domain']
+ } else {
+ # On non-bootstrap node we don't need to create Keystone resources again
+ class { '::heat::keystone::domain':
+ manage_domain => false,
+ manage_user => false,
+ manage_role => false,
+ }
+ }
+ }
+}
+
diff --git a/manifests/profile/base/heat/api.pp b/manifests/profile/base/heat/api.pp
new file mode 100644
index 0000000..67a0bfc
--- /dev/null
+++ b/manifests/profile/base/heat/api.pp
@@ -0,0 +1,35 @@
+# 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::heat::api
+#
+# Heat 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::heat::api (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::heat
+ include ::heat::api
+ }
+}
+
diff --git a/manifests/profile/base/heat/api_cfn.pp b/manifests/profile/base/heat/api_cfn.pp
new file mode 100644
index 0000000..2813826
--- /dev/null
+++ b/manifests/profile/base/heat/api_cfn.pp
@@ -0,0 +1,35 @@
+# 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::heat::api_cfn
+#
+# Heat CloudFormation 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::heat::api_cfn (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::heat
+ include ::heat::api_cfn
+ }
+}
+
diff --git a/manifests/profile/base/heat/api_cloudwatch.pp b/manifests/profile/base/heat/api_cloudwatch.pp
new file mode 100644
index 0000000..b2adf92
--- /dev/null
+++ b/manifests/profile/base/heat/api_cloudwatch.pp
@@ -0,0 +1,35 @@
+# 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::heat::api_cloudwatch
+#
+# Heat CloudWatch 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::heat::api_cloudwatch (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::heat
+ include ::heat::api_cloudwatch
+ }
+}
+
diff --git a/manifests/profile/base/heat/engine.pp b/manifests/profile/base/heat/engine.pp
new file mode 100644
index 0000000..b48837c
--- /dev/null
+++ b/manifests/profile/base/heat/engine.pp
@@ -0,0 +1,44 @@
+# 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::heat::engine
+#
+# Heat 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::heat::engine (
+ $sync_db = true,
+ $step = hiera('step'),
+) {
+
+ if $step >= 3 and $sync_db {
+ include ::heat::db::mysql
+ }
+
+ if $step >= 4 or ( $step >= 3 and $sync_db ) {
+ include ::tripleo::profile::base::heat
+ include ::heat::engine
+ }
+
+}
diff --git a/manifests/profile/base/keepalived.pp b/manifests/profile/base/keepalived.pp
new file mode 100644
index 0000000..af7c095
--- /dev/null
+++ b/manifests/profile/base/keepalived.pp
@@ -0,0 +1,42 @@
+# 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::keepalived
+#
+# Loadbalancer profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*enable_load_balancer*]
+# (Optional) Whether or not loadbalancer is enabled.
+# Defaults to hiera('enable_load_balancer', true).
+#
+class tripleo::profile::base::keepalived (
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $step = hiera('step'),
+) {
+
+ if $step >= 1 {
+ if $enable_load_balancer and hiera('enable_keepalived', true){
+ include ::tripleo::keepalived
+ }
+ }
+
+}
+
diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp
index 5d51e5e..a5060b8 100644
--- a/manifests/profile/base/keystone.pp
+++ b/manifests/profile/base/keystone.pp
@@ -22,14 +22,6 @@
# (Optional) Whether to run db sync
# Defaults to true
#
-# [*manage_service*]
-# (Optional) Whether to manage the keystone service
-# Defaults to undef
-#
-# [*enabled*]
-# (Optional) Whether to enable the keystone service
-# Defaults to undef
-#
# [*bootstrap_master*]
# (Optional) The hostname of the node responsible for bootstrapping
# Defaults to hiera('bootstrap_nodeid')
@@ -53,8 +45,6 @@
#
class tripleo::profile::base::keystone (
$sync_db = true,
- $manage_service = undef,
- $enabled = undef,
$bootstrap_master = undef,
$manage_roles = true,
$manage_endpoint = true,
@@ -69,8 +59,6 @@ class tripleo::profile::base::keystone (
if $step >= 4 or ( $step >= 3 and $sync_db ) {
class { '::keystone':
sync_db => $sync_db,
- manage_service => $manage_service,
- enabled => $enabled,
enable_bootstrap => $bootstrap_master,
}
diff --git a/manifests/profile/base/manila/api.pp b/manifests/profile/base/manila/api.pp
new file mode 100644
index 0000000..c1188ec
--- /dev/null
+++ b/manifests/profile/base/manila/api.pp
@@ -0,0 +1,35 @@
+# 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::manila::api
+#
+# Manila 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::manila::api (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::manila
+ include ::manila::api
+ }
+}
+
diff --git a/manifests/profile/base/manila/scheduler.pp b/manifests/profile/base/manila/scheduler.pp
new file mode 100644
index 0000000..b6d7593
--- /dev/null
+++ b/manifests/profile/base/manila/scheduler.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::manila::scheduler
+#
+# Manila Scheduler profile for tripleo
+#
+# === Parameters
+#
+# [*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 (
+ $step = hiera('step'),
+ $sync_db = true,
+) {
+
+ if $step >= 3 and $sync_db {
+ include ::manila::db::mysql
+ }
+
+ if $step >= 4 {
+ include ::manila::compute::nova
+ include ::manila::network::neutron
+ include ::manila::scheduler
+ }
+
+}
+
diff --git a/manifests/profile/base/manila/share.pp b/manifests/profile/base/manila/share.pp
new file mode 100644
index 0000000..932e013
--- /dev/null
+++ b/manifests/profile/base/manila/share.pp
@@ -0,0 +1,35 @@
+# 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::manila::share
+#
+# Manila share 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::manila::share (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::manila::share
+ }
+
+}
+
diff --git a/manifests/profile/base/memcached.pp b/manifests/profile/base/memcached.pp
new file mode 100644
index 0000000..54d12c8
--- /dev/null
+++ b/manifests/profile/base/memcached.pp
@@ -0,0 +1,34 @@
+# 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::memcached
+#
+# Memcached 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::memcached (
+ $step = hiera('step'),
+) {
+
+ if $step >= 1 {
+ include ::memcached
+ }
+}
diff --git a/manifests/profile/base/neutron.pp b/manifests/profile/base/neutron.pp
index 2958170..d5efa81 100644
--- a/manifests/profile/base/neutron.pp
+++ b/manifests/profile/base/neutron.pp
@@ -18,14 +18,19 @@
#
# === Parameters
#
+# [*sync_db*]
+# (Optional) Whether to run db sync
+# Defaults to true
+#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron (
- $step = hiera('step'),
+ $sync_db = true,
+ $step = hiera('step'),
) {
- if $step >= 4 {
+ if hiera('step') >= 4 or ( hiera('step') >= 3 and $sync_db ) {
include ::neutron
include ::neutron::config
}
diff --git a/manifests/profile/base/neutron/dhcp.pp b/manifests/profile/base/neutron/dhcp.pp
index 4d5bb28..180fd37 100644
--- a/manifests/profile/base/neutron/dhcp.pp
+++ b/manifests/profile/base/neutron/dhcp.pp
@@ -22,14 +22,6 @@
# (Optional)
# Defaults to hiera('neutron_dnsmasq_options')
#
-# [*enabled*]
-# (Optional) Whether to enable the Neutron DHCP Agent service
-# Defaults to undef
-#
-# [*manage_service*]
-# (Optional) Whether to manage the Neutron DHCP Agent service
-# Defaults to undef
-#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@@ -37,16 +29,11 @@
#
class tripleo::profile::base::neutron::dhcp (
$neutron_dnsmasq_options = hiera('neutron_dnsmasq_options', ''),
- $enabled = undef,
- $manage_service = undef,
$step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
- class { '::neutron::agents::dhcp':
- manage_service => $manage_service,
- enabled => $enabled
- }
+ include ::neutron::agents::dhcp
file { '/etc/neutron/dnsmasq-neutron.conf':
content => $neutron_dnsmasq_options,
diff --git a/manifests/profile/base/neutron/l3.pp b/manifests/profile/base/neutron/l3.pp
index f96833a..2b57555 100644
--- a/manifests/profile/base/neutron/l3.pp
+++ b/manifests/profile/base/neutron/l3.pp
@@ -22,30 +22,17 @@
# (Optional) Whether to set ovs_use_veth (for older kernel support)
# Defaults to hiera('neutron_ovs_use_veth', false)
#
-# [*enabled*]
-# (Optional) Whether to enable the Neutron L3 Agent service
-# Defaults to undef
-#
-# [*manage_service*]
-# (Optional) Whether to manage the Neutron L3 Agent service
-# 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::neutron::l3 (
- $enabled = undef,
- $manage_service = undef,
$step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
- class { '::neutron::agents::l3':
- manage_service => $manage_service,
- enabled => $enabled
- }
+ include ::neutron::agents::l3
Service<| title == 'neutron-server' |> -> Service <| title == 'neutron-l3' |>
}
diff --git a/manifests/profile/base/neutron/metadata.pp b/manifests/profile/base/neutron/metadata.pp
index bdad751..d7b4c99 100644
--- a/manifests/profile/base/neutron/metadata.pp
+++ b/manifests/profile/base/neutron/metadata.pp
@@ -18,30 +18,17 @@
#
# === Parameters
#
-# [*enabled*]
-# (Optional) Whether to enable the Neutron Metadata Agent service
-# Defaults to undef
-#
-# [*manage_service*]
-# (Optional) Whether to manage the Neutron Metadata Agent service
-# 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::neutron::metadata (
- $enabled = undef,
- $manage_service = undef,
$step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
- class { '::neutron::agents::metadata':
- manage_service => $manage_service,
- enabled => $enabled
- }
+ include ::neutron::agents::metadata
Service<| title == 'neutron-server' |> -> Service<| title == 'neutron-metadata' |>
}
diff --git a/manifests/profile/base/neutron/midonet.pp b/manifests/profile/base/neutron/midonet.pp
index 7374c57..972856f 100644
--- a/manifests/profile/base/neutron/midonet.pp
+++ b/manifests/profile/base/neutron/midonet.pp
@@ -20,7 +20,7 @@
#
# [*vip*]
# (Optional) Public Virtual IP Address for this cloud
-# Defaults to hiera('tripleo::loadbalancer::public_virtual_ip')
+# Defaults to hiera('public_virtual_ip')
#
# [*keystone_admin_token*]
# (Optional) The Keystone Admin Token
@@ -68,7 +68,7 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::midonet (
- $vip = hiera('tripleo::loadbalancer::public_virtual_ip', ''),
+ $vip = hiera('public_virtual_ip'),
$keystone_admin_token = hiera('keystone::admin_token', ''),
$zookeeper_client_ip = hiera('neutron::bind_host', ''),
$zookeeper_hostnames = hiera('controller_node_names', ''),
diff --git a/manifests/profile/base/neutron/ml2.pp b/manifests/profile/base/neutron/ml2.pp
index 47b1b3c..d18638e 100644
--- a/manifests/profile/base/neutron/ml2.pp
+++ b/manifests/profile/base/neutron/ml2.pp
@@ -22,6 +22,10 @@
# (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
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
@@ -29,10 +33,11 @@
#
class tripleo::profile::base::neutron::ml2 (
$mechanism_drivers = hiera('neutron::plugins::ml2::mechanism_drivers'),
+ $sync_db = true,
$step = hiera('step'),
) {
- if $step >= 4 {
+ if $step >= 4 or ( $step >= 3 and $sync_db ) {
include ::neutron::plugins::ml2
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/ovs.pp b/manifests/profile/base/neutron/ovs.pp
index 783952b..f801511 100644
--- a/manifests/profile/base/neutron/ovs.pp
+++ b/manifests/profile/base/neutron/ovs.pp
@@ -18,32 +18,19 @@
#
# === Parameters
#
-# [*manage_service*]
-# (Optional) Whether to manage the Neutron OVS Agent service
-# Defaults to undef
-#
-# [*enabled*]
-# (Optional) Whether to enable the Neutron OVS Agent service
-# 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::neutron::ovs(
- $manage_service = undef,
- $enabled = undef,
$step = hiera('step'),
) {
include ::tripleo::profile::base::neutron
if $step >= 4 {
- class { '::neutron::agents::ml2::ovs':
- manage_service => $manage_service,
- enabled => $enabled
- }
+ include ::neutron::agents::ml2::ovs
# Optional since manage_service may be false and neutron server may not be colocated.
Service<| title == 'neutron-server' |> -> Service<| title == 'neutron-ovs-agent-service' |>
diff --git a/manifests/profile/base/neutron/server.pp b/manifests/profile/base/neutron/server.pp
index 20127ed..320f83c 100644
--- a/manifests/profile/base/neutron/server.pp
+++ b/manifests/profile/base/neutron/server.pp
@@ -18,43 +18,24 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
-# [*manage_service*]
-# (Optional) Whether to manage the Neutron Server service
-# Defaults to undef
-#
-# [*enabled*]
-# (Optional) Whether to enable the Neutron Server service
-# 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::neutron::server (
- $sync_db = true,
- $manage_service = undef,
- $enabled = undef,
$step = hiera('step'),
) {
include ::tripleo::profile::base::neutron
- if $step >= 3 and $sync_db {
+ if $step >= 2 {
include ::neutron::db::mysql
}
- if $step >= 4 or ($step >=3 and $sync_db) {
+ if $step >= 4 {
include ::neutron::server::notifications
-
- class { '::neutron::server':
- sync_db => $sync_db,
- manage_service => $manage_service,
- enabled => $enabled
- }
+ include ::neutron::server
}
+
}
diff --git a/manifests/profile/base/nova.pp b/manifests/profile/base/nova.pp
new file mode 100644
index 0000000..66f0d7d
--- /dev/null
+++ b/manifests/profile/base/nova.pp
@@ -0,0 +1,44 @@
+# 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::nova
+#
+# Nova base profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::nova (
+ $step = hiera('step'),
+) {
+
+ if hiera('nova::use_ipv6', false) {
+ $memcached_servers = suffix(hiera('memcache_node_ips_v6'), ':11211')
+ } else {
+ $memcached_servers = suffix(hiera('memcache_node_ips'), ':11211')
+ }
+ if $step >= 3 {
+ include ::nova
+ # TODO(emilien): once we merge https://review.openstack.org/#/c/325983/
+ # let's override the value this way.
+ warning('Overriding memcached_servers from puppet-tripleo until 325983 lands.')
+ Nova {
+ memcached_servers => $memcached_servers,
+ }
+ include ::nova::config
+ }
+}
diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp
new file mode 100644
index 0000000..cb8d3f2
--- /dev/null
+++ b/manifests/profile/base/nova/api.pp
@@ -0,0 +1,43 @@
+# 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::nova::api
+#
+# Nova API profile for tripleo
+#
+# === Parameters
+#
+# [*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,
+) {
+
+ include ::tripleo::profile::base::nova
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ class { '::nova::api':
+ sync_db => $sync_db,
+ sync_db_api => $sync_db,
+ }
+ }
+}
+
diff --git a/manifests/profile/base/nova/compute.pp b/manifests/profile/base/nova/compute.pp
new file mode 100644
index 0000000..ae37d4a
--- /dev/null
+++ b/manifests/profile/base/nova/compute.pp
@@ -0,0 +1,35 @@
+# 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::nova::compute
+#
+# Nova Compute 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::nova::compute (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::nova
+ include ::nova::compute
+ }
+
+}
diff --git a/manifests/profile/base/nova/conductor.pp b/manifests/profile/base/nova/conductor.pp
new file mode 100644
index 0000000..04c9d06
--- /dev/null
+++ b/manifests/profile/base/nova/conductor.pp
@@ -0,0 +1,35 @@
+# 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::nova::conductor
+#
+# Nova Conductor 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::nova::conductor (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::nova
+ if $step >= 4 {
+ include ::nova::conductor
+ }
+
+}
diff --git a/manifests/profile/base/nova/consoleauth.pp b/manifests/profile/base/nova/consoleauth.pp
new file mode 100644
index 0000000..442cf84
--- /dev/null
+++ b/manifests/profile/base/nova/consoleauth.pp
@@ -0,0 +1,35 @@
+# 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::nova::consoleauth
+#
+# Nova Consoleauth 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::nova::consoleauth (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::nova
+ include ::nova::consoleauth
+ }
+
+}
diff --git a/manifests/profile/base/nova/scheduler.pp b/manifests/profile/base/nova/scheduler.pp
new file mode 100644
index 0000000..13b4e82
--- /dev/null
+++ b/manifests/profile/base/nova/scheduler.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::nova::scheduler
+#
+# Nova 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::nova::scheduler (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::nova
+ include ::nova::scheduler
+ include ::nova::scheduler::filter
+ }
+
+}
diff --git a/manifests/profile/base/nova/vncproxy.pp b/manifests/profile/base/nova/vncproxy.pp
new file mode 100644
index 0000000..aa0cc7b
--- /dev/null
+++ b/manifests/profile/base/nova/vncproxy.pp
@@ -0,0 +1,35 @@
+# 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::nova::vncproxy
+#
+# Nova vncproxy 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::nova::vncproxy (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::nova
+ include ::nova::vncproxy
+ }
+
+}
diff --git a/manifests/profile/base/rabbitmq.pp b/manifests/profile/base/rabbitmq.pp
new file mode 100644
index 0000000..6e86eab
--- /dev/null
+++ b/manifests/profile/base/rabbitmq.pp
@@ -0,0 +1,96 @@
+# 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::rabbitmq
+#
+# RabbitMQ profile for tripleo
+#
+# === Parameters
+#
+# [*nodes*]
+# (Optional) Array of host(s) for RabbitMQ nodes.
+# Defaults to hiera('rabbit_node_ips', []).
+#
+# [*ipv6*]
+# (Optional) Whether to deploy RabbitMQ on IPv6 network.
+# Defaults to str2bool(hiera('rabbit_ipv6', false)).
+#
+# [*environment*]
+# (Optional) RabbitMQ environment.
+# Defaults to hiera('rabbitmq_environment').
+#
+# [*kernel_variables*]
+# (Optional) RabbitMQ environment.
+# Defaults to hiera('rabbitmq_environment').
+#
+# [*config_variables*]
+# (Optional) RabbitMQ environment.
+# Defaults to hiera('rabbitmq_config_variables').
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::rabbitmq (
+ $nodes = hiera('rabbit_node_ips', []),
+ $ipv6 = str2bool(hiera('rabbit_ipv6', false)),
+ $environment = hiera('rabbitmq_environment'),
+ $kernel_variables = hiera('rabbitmq_kernel_variables'),
+ $config_variables = hiera('rabbitmq_config_variables'),
+ $step = hiera('step'),
+) {
+
+ # IPv6 environment, necessary for RabbitMQ.
+ if $ipv6 {
+ $rabbit_env = merge($environment, {
+ 'RABBITMQ_SERVER_START_ARGS' => '"-proto_dist inet6_tcp"'
+ })
+ } else {
+ $rabbit_env = $environment
+ }
+
+ $manage_service = hiera('rabbitmq::service_manage', true)
+ if $step >= 1 {
+ # Specific configuration for multi-nodes or when running with Pacemaker.
+ if count($nodes) > 1 or ! $manage_service {
+ class { '::rabbitmq':
+ config_cluster => $manage_service,
+ cluster_nodes => $nodes,
+ tcp_keepalive => false,
+ config_kernel_variables => $kernel_variables,
+ config_variables => $config_variables,
+ environment_variables => $rabbit_env,
+ }
+ # when running multi-nodes without Pacemaker
+ if $manage_service {
+ rabbitmq_policy { 'ha-all@/':
+ pattern => '^(?!amq\.).*',
+ definition => {
+ 'ha-mode' => 'all',
+ },
+ }
+ }
+ } else {
+ # Standard configuration
+ class { '::rabbitmq':
+ tcp_keepalive => false,
+ config_kernel_variables => $kernel_variables,
+ config_variables => $config_variables,
+ environment_variables => $rabbit_env,
+ }
+ }
+ }
+
+}
diff --git a/manifests/profile/base/sahara.pp b/manifests/profile/base/sahara.pp
new file mode 100644
index 0000000..befb5d3
--- /dev/null
+++ b/manifests/profile/base/sahara.pp
@@ -0,0 +1,31 @@
+# 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::sahara
+#
+# Sahara server profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::sahara (
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ include ::sahara
+ }
+}
diff --git a/manifests/profile/base/sahara/api.pp b/manifests/profile/base/sahara/api.pp
new file mode 100644
index 0000000..e9149b1
--- /dev/null
+++ b/manifests/profile/base/sahara/api.pp
@@ -0,0 +1,33 @@
+# 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::sahara::api
+#
+# Sahara 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::sahara::api (
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ include ::tripleo::profile::base::sahara
+ include ::sahara::api
+ }
+}
diff --git a/manifests/profile/base/sahara/engine.pp b/manifests/profile/base/sahara/engine.pp
new file mode 100644
index 0000000..28aff7b
--- /dev/null
+++ b/manifests/profile/base/sahara/engine.pp
@@ -0,0 +1,42 @@
+# 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::sahara::engine
+#
+# Sahara 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::sahara::engine (
+ $sync_db = true,
+ $step = hiera('step'),
+) {
+ if $step >= 3 and $sync_db {
+ include ::sahara::db::mysql
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::tripleo::profile::base::sahara
+ include ::sahara::engine
+ }
+}
diff --git a/manifests/profile/base/swift/proxy.pp b/manifests/profile/base/swift/proxy.pp
new file mode 100644
index 0000000..40e61ae
--- /dev/null
+++ b/manifests/profile/base/swift/proxy.pp
@@ -0,0 +1,45 @@
+# 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::swift::proxy
+#
+# Swift proxy 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::swift::proxy (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::swift::proxy
+ include ::swift::proxy::proxy_logging
+ include ::swift::proxy::healthcheck
+ include ::swift::proxy::cache
+ include ::swift::proxy::keystone
+ include ::swift::proxy::authtoken
+ include ::swift::proxy::staticweb
+ include ::swift::proxy::ratelimit
+ include ::swift::proxy::catch_errors
+ include ::swift::proxy::tempurl
+ include ::swift::proxy::formpost
+ include ::swift::proxy::bulk
+ }
+}
diff --git a/manifests/profile/pacemaker/cinder/api.pp b/manifests/profile/pacemaker/cinder/api.pp
new file mode 100644
index 0000000..2c9cedf
--- /dev/null
+++ b/manifests/profile/pacemaker/cinder/api.pp
@@ -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]],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/cinder/scheduler.pp b/manifests/profile/pacemaker/cinder/scheduler.pp
new file mode 100644
index 0000000..9b79903
--- /dev/null
+++ b/manifests/profile/pacemaker/cinder/scheduler.pp
@@ -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]],
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/cinder/volume.pp b/manifests/profile/pacemaker/cinder/volume.pp
new file mode 100644
index 0000000..a4f251e
--- /dev/null
+++ b/manifests/profile/pacemaker/cinder/volume.pp
@@ -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]],
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/database/mongodb.pp b/manifests/profile/pacemaker/database/mongodb.pp
new file mode 100644
index 0000000..15c84d7
--- /dev/null
+++ b/manifests/profile/pacemaker/database/mongodb.pp
@@ -0,0 +1,74 @@
+# 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::database::mongodb
+#
+# Mongodb Pacemaker HA profile for tripleo
+#
+# === Parameters
+#
+# [*mongodb_replset*]
+# Mongodb replicaset name
+#
+# [*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::database::mongodb (
+ $mongodb_replset,
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ if $step >= 1 {
+ include ::mongodb::globals
+ include ::mongodb::client
+ include ::mongodb::server
+ }
+
+ if $step >= 2 {
+
+ include ::tripleo::profile::base::database::mongodbcommon
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $pacemaker_master {
+ pacemaker::resource::service { $::mongodb::params::service_name :
+ op_params => 'start timeout=370s stop timeout=200s',
+ clone_params => true,
+ require => Class['::mongodb::server'],
+ }
+ # NOTE (spredzy) : The replset can only be run
+ # once all the nodes have joined the cluster.
+ tripleo::profile::pacemaker::database::mongodbvalidator {
+ $tripleo::profile::base::database::mongodbcommon::mongodb_node_ips :
+ port => $tripleo::profile::base::database::mongodbcommon::port,
+ require => Pacemaker::Resource::Service[$::mongodb::params::service_name],
+ before => Mongodb_replset[$mongodb_replset],
+ }
+ mongodb_replset { $mongodb_replset :
+ members => $tripleo::profile::base::database::mongodbcommon::mongo_node_ips_with_port_nobr,
+ }
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/database/mongodbvalidator.pp b/manifests/profile/pacemaker/database/mongodbvalidator.pp
new file mode 100644
index 0000000..95d3bd7
--- /dev/null
+++ b/manifests/profile/pacemaker/database/mongodbvalidator.pp
@@ -0,0 +1,37 @@
+# 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::database::mongodb::conn_validator
+#
+# Connection validator for a node that serves MongoDB. This is done to be able
+# to iterate through the different servers in a more seamless way.
+#
+# === Parameters
+#
+# [*title*]
+# the title or namevar of the resource will be used as the server of the
+# actual mongodb_conn_validator.
+#
+# [*port*]
+# The port in which the MongoDB server is listening on.
+#
+define tripleo::profile::pacemaker::database::mongodbvalidator(
+ $port,
+) {
+ mongodb_conn_validator { "${title}_conn_validator" :
+ server => $title,
+ port => $port,
+ timeout => '600',
+ }
+}
diff --git a/manifests/profile/pacemaker/database/redis.pp b/manifests/profile/pacemaker/database/redis.pp
new file mode 100644
index 0000000..9bb96ae
--- /dev/null
+++ b/manifests/profile/pacemaker/database/redis.pp
@@ -0,0 +1,63 @@
+# 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::database::redis
+#
+# OpenStack Redis Pacemaker HA profile for tripleo
+#
+# === Parameters
+#
+# [*redis_vip*]
+# Redis virtual IP
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*enable_load_balancer*]
+# (Optional) Whether load balancing is enabled for this cluster
+# Defaults to hiera('enable_load_balancer', true)
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+
+class tripleo::profile::pacemaker::database::redis (
+ $redis_vip,
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $step >= 1 {
+ include ::redis
+ }
+
+ if $step >= 2 and $pacemaker_master {
+ pacemaker::resource::ocf { 'redis':
+ ocf_agent_name => 'heartbeat:redis',
+ master_params => '',
+ meta_params => 'notify=true ordered=true interleave=true',
+ resource_params => 'wait_last_known_master=true',
+ require => Class['::redis'],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/glance.pp b/manifests/profile/pacemaker/glance.pp
index 4dca67e..10f4f03 100644
--- a/manifests/profile/pacemaker/glance.pp
+++ b/manifests/profile/pacemaker/glance.pp
@@ -75,14 +75,9 @@ class tripleo::profile::pacemaker::glance (
$pacemaker_master = false
}
- class { '::tripleo::profile::base::glance::api':
- manage_service => false,
- enabled => false,
- }
+ include ::tripleo::profile::base::glance::api
class { '::tripleo::profile::base::glance::registry':
sync_db => $pacemaker_master,
- manage_service => false,
- enabled => false,
}
if $step >= 4 {
diff --git a/manifests/profile/pacemaker/haproxy.pp b/manifests/profile/pacemaker/haproxy.pp
new file mode 100644
index 0000000..a7aca58
--- /dev/null
+++ b/manifests/profile/pacemaker/haproxy.pp
@@ -0,0 +1,99 @@
+# 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::haproxy
+#
+# HAproxy with 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')
+#
+# [*enable_load_balancer*]
+# (Optional) Whether load balancing is enabled for this cluster
+# Defaults to hiera('enable_load_balancer', true)
+#
+class tripleo::profile::pacemaker::haproxy (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+ $enable_load_balancer = hiera('enable_load_balancer', true)
+) {
+
+ include ::tripleo::profile::base::haproxy
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $step >= 2 and $pacemaker_master and $enable_load_balancer {
+ # FIXME: we should not have to access tripleo::haproxy class
+ # parameters here to configure pacemaker VIPs. The configuration
+ # of pacemaker VIPs could move into puppet-tripleo or we should
+ # make use of less specific hiera parameters here for the settings.
+ pacemaker::resource::service { 'haproxy':
+ clone_params => true,
+ }
+
+ $control_vip = hiera('controller_virtual_ip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_control_vip':
+ vip_name => 'control',
+ ip_address => $control_vip,
+ }
+
+ $public_vip = hiera('public_virtual_ip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_public_vip':
+ ensure => $public_vip and $public_vip != $control_vip,
+ vip_name => 'public',
+ ip_address => $public_vip,
+ }
+
+ $redis_vip = hiera('redis_vip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_redis_vip':
+ ensure => $redis_vip and $redis_vip != $control_vip,
+ vip_name => 'redis',
+ ip_address => $redis_vip,
+ }
+
+ $internal_api_vip = hiera('internal_api_virtual_ip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_internal_api_vip':
+ ensure => $internal_api_vip and $internal_api_vip != $control_vip,
+ vip_name => 'internal_api',
+ ip_address => $internal_api_vip,
+ }
+
+ $storage_vip = hiera('storage_virtual_ip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_storage_vip':
+ ensure => $storage_vip and $storage_vip != $control_vip,
+ vip_name => 'storage',
+ ip_address => $storage_vip,
+ }
+
+ $storage_mgmt_vip = hiera('storage_mgmt_virtual_ip')
+ tripleo::pacemaker::haproxy_with_vip { 'haproxy_and_storage_mgmt_vip':
+ ensure => $storage_mgmt_vip and $storage_mgmt_vip != $control_vip,
+ vip_name => 'storage_mgmt',
+ ip_address => $storage_mgmt_vip,
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/heat.pp b/manifests/profile/pacemaker/heat.pp
new file mode 100644
index 0000000..001b36f
--- /dev/null
+++ b/manifests/profile/pacemaker/heat.pp
@@ -0,0 +1,132 @@
+# 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::heat
+#
+# Heat 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::heat (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ Service <| tag == 'heat-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::heat':
+ bootstrap_master => $bootstrap_node,
+ }
+ include ::tripleo::profile::base::heat::api
+ include ::tripleo::profile::base::heat::api_cfn
+ include ::tripleo::profile::base::heat::api_cloudwatch
+ class { '::tripleo::profile::base::heat::engine':
+ sync_db => $pacemaker_master,
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ # Heat
+ pacemaker::resource::service { $::heat::params::api_service_name :
+ clone_params => 'interleave=true',
+ }
+ pacemaker::resource::service { $::heat::params::api_cloudwatch_service_name :
+ clone_params => 'interleave=true',
+ }
+ pacemaker::resource::service { $::heat::params::api_cfn_service_name :
+ clone_params => 'interleave=true',
+ }
+ pacemaker::resource::service { $::heat::params::engine_service_name :
+ clone_params => 'interleave=true',
+ }
+ pacemaker::constraint::base { 'heat-api-then-heat-api-cfn-constraint':
+ constraint_type => 'order',
+ first_resource => "${::heat::params::api_service_name}-clone",
+ second_resource => "${::heat::params::api_cfn_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],
+ Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],
+ }
+ pacemaker::constraint::colocation { 'heat-api-cfn-with-heat-api-colocation':
+ source => "${::heat::params::api_cfn_service_name}-clone",
+ target => "${::heat::params::api_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],
+ Pacemaker::Resource::Service[$::heat::params::api_service_name]],
+ }
+ pacemaker::constraint::base { 'heat-api-cfn-then-heat-api-cloudwatch-constraint':
+ constraint_type => 'order',
+ first_resource => "${::heat::params::api_cfn_service_name}-clone",
+ second_resource => "${::heat::params::api_cloudwatch_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],
+ Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name]],
+ }
+ pacemaker::constraint::colocation { 'heat-api-cloudwatch-with-heat-api-cfn-colocation':
+ source => "${::heat::params::api_cloudwatch_service_name}-clone",
+ target => "${::heat::params::api_cfn_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_cfn_service_name],
+ Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name]],
+ }
+ pacemaker::constraint::base { 'heat-api-cloudwatch-then-heat-engine-constraint':
+ constraint_type => 'order',
+ first_resource => "${::heat::params::api_cloudwatch_service_name}-clone",
+ second_resource => "${::heat::params::engine_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],
+ Pacemaker::Resource::Service[$::heat::params::engine_service_name]],
+ }
+ pacemaker::constraint::colocation { 'heat-engine-with-heat-api-cloudwatch-colocation':
+ source => "${::heat::params::engine_service_name}-clone",
+ target => "${::heat::params::api_cloudwatch_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_cloudwatch_service_name],
+ Pacemaker::Resource::Service[$::heat::params::engine_service_name]],
+ }
+ pacemaker::constraint::base { 'ceilometer-notification-then-heat-api-constraint':
+ constraint_type => 'order',
+ first_resource => "${::ceilometer::params::agent_notification_service_name}-clone",
+ second_resource => "${::heat::params::api_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::heat::params::api_service_name],
+ Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name]],
+ }
+
+ }
+
+}
diff --git a/manifests/profile/pacemaker/keystone.pp b/manifests/profile/pacemaker/keystone.pp
index 712d58d..42c44d4 100644
--- a/manifests/profile/pacemaker/keystone.pp
+++ b/manifests/profile/pacemaker/keystone.pp
@@ -60,8 +60,6 @@ class tripleo::profile::pacemaker::keystone (
class { '::tripleo::profile::base::keystone':
sync_db => $pacemaker_master,
- manage_service => false,
- enabled => false,
bootstrap_master => $pacemaker_master,
manage_roles => $manage_roles,
manage_endpoint => $manage_roles
diff --git a/manifests/profile/pacemaker/manila.pp b/manifests/profile/pacemaker/manila.pp
new file mode 100644
index 0000000..37cab9f
--- /dev/null
+++ b/manifests/profile/pacemaker/manila.pp
@@ -0,0 +1,162 @@
+# 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::manila
+#
+# Manila 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')
+#
+# [*manila_generic_enable*]
+# (Optional) Enable the generic backend.
+# Defaults to hiera('manila_generic_enable_backend', 'false')
+#
+# [*driver_handles_share_servers*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::driver_handles_share_servers')
+#
+# [*smb_template_config_path*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::smb_template_config_path')
+#
+# [*volume_name_template*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::volume_name_template')
+
+# [*volume_snapshot_name_template*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::volume_snapshot_name_template')
+#
+# [*share_mount_path*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::share_mount_path')
+#
+# [*max_time_to_create_volume*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::max_time_to_create_volume')
+#
+# [*max_time_to_attach*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::max_time_to_attach')
+#
+# [*service_instance_smb_config_path*]
+# (Optional)
+# Defaults to downcase(hiera('manila::backend::generic::service_instance_smb_config_path'))
+#
+# [*share_volume_fstype*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::share_volume_fstype')
+#
+# [*cinder_volume_type*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::cinder_volume_type', '')
+#
+# [*service_instance_user*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_user')
+
+# [*service_instance_password*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_password')
+
+# [*service_instance_flavor_id*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_flavor_id')
+#
+class tripleo::profile::pacemaker::manila (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+ $manila_generic_enable = hiera('manila_generic_enable_backend', false),
+ $driver_handles_share_servers = hiera('manila::backend::generic::driver_handles_share_servers'),
+ $smb_template_config_path = hiera('manila::backend::generic::smb_template_config_path'),
+ $volume_name_template = hiera('manila::backend::generic::volume_name_template'),
+ $volume_snapshot_name_template = hiera('manila::backend::generic::volume_snapshot_name_template'),
+ $share_mount_path = hiera('manila::backend::generic::share_mount_path'),
+ $max_time_to_create_volume = hiera('manila::backend::generic::max_time_to_create_volume'),
+ $max_time_to_attach = hiera('manila::backend::generic::max_time_to_attach'),
+ $service_instance_smb_config_path = hiera('manila::backend::generic::service_instance_smb_config_path'),
+ $share_volume_fstype = hiera('manila::backend::generic::share_volume_fstype'),
+ $cinder_volume_type = hiera('manila::backend::generic::cinder_volume_type', ''),
+ $service_instance_user = hiera('manila::service_instance::service_instance_user'),
+ $service_instance_password = hiera('manila::service_instance::service_instance_password'),
+ $service_instance_flavor_id = hiera('manila::service_instance::service_instance_flavor_id'),
+) {
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ # make it so puppet can't restart the manila-share service, since that is
+ # the only pacemaker managed one
+ Service <| tag == 'manila-share' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
+ if $step >= 4 {
+ include ::tripleo::profile::base::manila::api
+ include ::tripleo::profile::base::manila::scheduler
+ include ::tripleo::profile::base::manila::share
+
+ $manila_generic_enable = hiera('manila_generic_enable_backend', false)
+ if $manila_generic_enable {
+ $manila_generic_backend = hiera('manila::backend::generic::title')
+ manila::backend::generic { $manila_generic_backend :
+ driver_handles_share_servers => $driver_handles_share_servers,
+ smb_template_config_path => $smb_template_config_path,
+ volume_name_template => $volume_name_template ,
+ volume_snapshot_name_template => $volume_snapshot_name_template,
+ share_mount_path => $share_mount_path,
+ max_time_to_create_volume => $max_time_to_create_volume,
+ max_time_to_attach => $max_time_to_attach,
+ service_instance_smb_config_path => $service_instance_smb_config_path,
+ share_volume_fstype => $share_volume_fstype,
+ cinder_volume_type => $cinder_volume_type,
+ }
+
+ manila_config {
+ "${manila_generic_backend}/service_instance_user": value => $service_instance_user;
+ "${manila_generic_backend}/service_instance_password": value => $service_instance_password;
+ "${manila_generic_backend}/service_instance_flavor_id": value => $service_instance_flavor_id;
+ }
+
+ include ::manila::volume::cinder
+ }
+
+ $manila_enabled_backends = delete_undef_values([$manila_generic_backend])
+ class { '::manila::backends' :
+ enabled_share_backends => $manila_enabled_backends,
+ }
+ }
+
+ if $step >= 5 and $pacemaker_master {
+
+ # only manila-share is pacemaker managed, and in a/p
+ pacemaker::resource::service { $::manila::params::share_service : }
+
+ }
+}
diff --git a/manifests/profile/pacemaker/memcached.pp b/manifests/profile/pacemaker/memcached.pp
new file mode 100644
index 0000000..09af5d6
--- /dev/null
+++ b/manifests/profile/pacemaker/memcached.pp
@@ -0,0 +1,61 @@
+# 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::memcached
+#
+# Memcached 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::memcached (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ include ::tripleo::profile::base::memcached
+
+ if $step >= 2 and $pacemaker_master {
+ pacemaker::resource::service { $::memcached::params::service_name :
+ clone_params => 'interleave=true',
+ require => Class['::memcached'],
+ }
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ pacemaker::constraint::base { 'memcached-then-openstack-core-constraint':
+ constraint_type => 'order',
+ first_resource => 'memcached-clone',
+ second_resource => 'openstack-core-clone',
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service['memcached'],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/neutron.pp b/manifests/profile/pacemaker/neutron.pp
index 03ccbc3..2af53dc 100644
--- a/manifests/profile/pacemaker/neutron.pp
+++ b/manifests/profile/pacemaker/neutron.pp
@@ -61,9 +61,12 @@ class tripleo::profile::pacemaker::neutron (
stop => '/bin/true',
}
+ class { '::tripleo::profile::base::neutron':
+ sync_db => ($::hostname == downcase($pacemaker_master)),
+ }
+
if $step >= 4 {
include ::neutron::params
- include ::tripleo::profile::base::neutron
# To be removed when puppet-oslo comes into service
neutron_config {
diff --git a/manifests/profile/pacemaker/neutron/dhcp.pp b/manifests/profile/pacemaker/neutron/dhcp.pp
index 841d225..1f3b178 100644
--- a/manifests/profile/pacemaker/neutron/dhcp.pp
+++ b/manifests/profile/pacemaker/neutron/dhcp.pp
@@ -34,11 +34,8 @@ class tripleo::profile::pacemaker::neutron::dhcp (
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
+ include ::tripleo::profile::base::neutron::dhcp
- class { '::tripleo::profile::base::neutron::dhcp':
- manage_service => false,
- enabled => false,
- }
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::neutron::params::dhcp_agent_service:
clone_params => 'interleave=true',
diff --git a/manifests/profile/pacemaker/neutron/l3.pp b/manifests/profile/pacemaker/neutron/l3.pp
index a900016..e1699cc 100644
--- a/manifests/profile/pacemaker/neutron/l3.pp
+++ b/manifests/profile/pacemaker/neutron/l3.pp
@@ -34,11 +34,8 @@ class tripleo::profile::pacemaker::neutron::l3 (
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
+ include ::tripleo::profile::base::neutron::l3
- class { '::tripleo::profile::base::neutron::l3':
- manage_service => false,
- enabled => false,
- }
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::neutron::params::l3_agent_service:
clone_params => 'interleave=true',
diff --git a/manifests/profile/pacemaker/neutron/metadata.pp b/manifests/profile/pacemaker/neutron/metadata.pp
index 4030bb2..e6bccb1 100644
--- a/manifests/profile/pacemaker/neutron/metadata.pp
+++ b/manifests/profile/pacemaker/neutron/metadata.pp
@@ -34,11 +34,8 @@ class tripleo::profile::pacemaker::neutron::metadata (
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
+ include ::tripleo::profile::base::neutron::metadata
- class { '::tripleo::profile::base::neutron::metadata':
- manage_service => false,
- enabled => false,
- }
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::neutron::params::metadata_agent_service:
clone_params => 'interleave=true',
diff --git a/manifests/profile/pacemaker/neutron/ml2.pp b/manifests/profile/pacemaker/neutron/ml2.pp
index 6c6e580..8acaf21 100644
--- a/manifests/profile/pacemaker/neutron/ml2.pp
+++ b/manifests/profile/pacemaker/neutron/ml2.pp
@@ -18,8 +18,19 @@
#
# === Parameters
#
-class tripleo::profile::pacemaker::neutron::ml2 {
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
+class tripleo::profile::pacemaker::neutron::ml2 (
+ $pacemaker_master = hiera('bootstrap_nodeid'),
+) {
+
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
- include ::tripleo::profile::base::neutron::ml2
+
+ class { '::tripleo::profile::base::neutron::ml2':
+ sync_db => ($::hostname == downcase($pacemaker_master))
+ }
+
}
diff --git a/manifests/profile/pacemaker/neutron/ovs.pp b/manifests/profile/pacemaker/neutron/ovs.pp
index c3ce36e..34ff5d3 100644
--- a/manifests/profile/pacemaker/neutron/ovs.pp
+++ b/manifests/profile/pacemaker/neutron/ovs.pp
@@ -34,11 +34,7 @@ class tripleo::profile::pacemaker::neutron::ovs (
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
-
- class { '::tripleo::profile::base::neutron::ovs':
- manage_service => false,
- enabled => false,
- }
+ include ::tripleo::profile::base::neutron::ovs
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
diff --git a/manifests/profile/pacemaker/neutron/server.pp b/manifests/profile/pacemaker/neutron/server.pp
index 4ff2e88..0bad1b9 100644
--- a/manifests/profile/pacemaker/neutron/server.pp
+++ b/manifests/profile/pacemaker/neutron/server.pp
@@ -23,36 +23,27 @@
# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
-# (Optional) The current step in deployment. See tripleo-heat-templates
-# for more details.
-# Defaults to hiera('step')
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::neutron::server (
$pacemaker_master = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $step = hiera('step'),
) {
+
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
- if $step >= 5 {
-
- class { '::tripleo::profile::base::neutron::server':
- sync_db => ($::hostname == downcase($pacemaker_master)),
- manage_service => false,
- enabled => false,
- }
-
- if ($::hostname == downcase($pacemaker_master)) {
- pacemaker::constraint::base { 'keystone-to-neutron-server-constraint':
- constraint_type => 'order',
- first_resource => 'openstack-core-clone',
- second_resource => "${::neutron::params::server_service}-clone",
- first_action => 'start',
- second_action => 'start',
- require => [Pacemaker::Resource::Ocf['openstack-core'],
- Pacemaker::Resource::Service[$::neutron::params::server_service]],
- }
- }
+ $sync_db = ($::hostname == downcase($pacemaker_master))
+ if $step >= 2 and $sync_db {
+ include ::neutron::db::mysql
+ Exec<| title == 'galera-ready'|> -> Class['neutron::db::mysql']
+ }
+ if $step >= 4 or ( $step >= 3 and $sync_db ) {
+ include ::neutron::server::notifications
+ include ::neutron::server
}
+
}
diff --git a/manifests/profile/pacemaker/nova.pp b/manifests/profile/pacemaker/nova.pp
new file mode 100644
index 0000000..b6e6cba
--- /dev/null
+++ b/manifests/profile/pacemaker/nova.pp
@@ -0,0 +1,40 @@
+# 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::nova
+#
+# Nova base with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The step in the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::pacemaker::nova (
+ $step = hiera('step'),
+) {
+
+ Service <|
+ tag == 'nova-service'
+ |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
+ include ::tripleo::profile::base::nova
+
+}
diff --git a/manifests/profile/pacemaker/nova/api.pp b/manifests/profile/pacemaker/nova/api.pp
new file mode 100644
index 0000000..5d8e11f
--- /dev/null
+++ b/manifests/profile/pacemaker/nova/api.pp
@@ -0,0 +1,48 @@
+# 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::nova::api
+#
+# Nova API with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*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')),
+) {
+
+ include ::nova::params
+ include ::tripleo::profile::pacemaker::nova
+
+ class { '::tripleo::profile::base::nova::api':
+ sync_db => (downcase($::hostname) == $pacemaker_master),
+ }
+
+ if $step >= 5 and downcase($::hostname) == $pacemaker_master {
+ pacemaker::resource::service { $::nova::params::api_service_name:
+ clone_params => 'interleave=true',
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/nova/conductor.pp b/manifests/profile/pacemaker/nova/conductor.pp
new file mode 100644
index 0000000..76dc462
--- /dev/null
+++ b/manifests/profile/pacemaker/nova/conductor.pp
@@ -0,0 +1,45 @@
+# 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::nova::conductor
+#
+# Nova Conductor with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*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'),
+) {
+
+ include ::nova::params
+ include ::tripleo::profile::pacemaker::nova
+ include ::tripleo::profile::base::nova::conductor
+
+ if $step >= 5 and downcase($::hostname) == $pacemaker_master {
+ pacemaker::resource::service { $::nova::params::conductor_service_name:
+ clone_params => 'interleave=true',
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/nova/consoleauth.pp b/manifests/profile/pacemaker/nova/consoleauth.pp
new file mode 100644
index 0000000..54f17b7
--- /dev/null
+++ b/manifests/profile/pacemaker/nova/consoleauth.pp
@@ -0,0 +1,45 @@
+# 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::nova::consoleauth
+#
+# Nova Consoleauth with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*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'),
+) {
+
+ include ::nova::params
+ include ::tripleo::profile::pacemaker::nova
+ include ::tripleo::profile::base::nova::consoleauth
+
+ if $step >= 5 and downcase($::hostname) == $pacemaker_master {
+ pacemaker::resource::service { $::nova::params::consoleauth_service_name:
+ clone_params => 'interleave=true',
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/nova/scheduler.pp b/manifests/profile/pacemaker/nova/scheduler.pp
new file mode 100644
index 0000000..6516394
--- /dev/null
+++ b/manifests/profile/pacemaker/nova/scheduler.pp
@@ -0,0 +1,45 @@
+# 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::nova::scheduler
+#
+# Nova Scheduler with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*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'),
+) {
+
+ include ::nova::params
+ include ::tripleo::profile::pacemaker::nova
+ include ::tripleo::profile::base::nova::scheduler
+
+ 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
new file mode 100644
index 0000000..7f7d095
--- /dev/null
+++ b/manifests/profile/pacemaker/nova/vncproxy.pp
@@ -0,0 +1,45 @@
+# 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::nova::vncproxy
+#
+# Nova vncproxy with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*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'),
+) {
+
+ include ::nova::params
+ include ::tripleo::profile::pacemaker::nova
+ include ::tripleo::profile::base::nova::vncproxy
+
+ if $step >= 5 and downcase($::hostname) == $pacemaker_master {
+ pacemaker::resource::service { $::nova::params::vncproxy_service_name:
+ clone_params => 'interleave=true',
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/rabbitmq.pp b/manifests/profile/pacemaker/rabbitmq.pp
new file mode 100644
index 0000000..efb91b5
--- /dev/null
+++ b/manifests/profile/pacemaker/rabbitmq.pp
@@ -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::rabbitmq
+#
+# RabbitMQ 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')
+#
+# [*erlang_cookie*]
+# (Optional) Content of erlang cookie.
+# Defaults to hiera('rabbitmq::erlang_cookie').
+#
+class tripleo::profile::pacemaker::rabbitmq (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+ $erlang_cookie = hiera('rabbitmq::erlang_cookie'),
+) {
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ include ::tripleo::profile::base::rabbitmq
+
+ file { '/var/lib/rabbitmq/.erlang.cookie':
+ ensure => file,
+ owner => 'rabbitmq',
+ group => 'rabbitmq',
+ mode => '0400',
+ content => $erlang_cookie,
+ replace => true,
+ require => Class['::rabbitmq'],
+ }
+
+ if $step >= 2 and $pacemaker_master {
+ pacemaker::resource::ocf { 'rabbitmq':
+ ocf_agent_name => 'heartbeat:rabbitmq-cluster',
+ resource_params => 'set_policy=\'ha-all ^(?!amq\.).* {"ha-mode":"all"}\'',
+ clone_params => 'ordered=true interleave=true',
+ meta_params => 'notify=true',
+ require => Class['::rabbitmq'],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/sahara.pp b/manifests/profile/pacemaker/sahara.pp
new file mode 100644
index 0000000..04b4edf
--- /dev/null
+++ b/manifests/profile/pacemaker/sahara.pp
@@ -0,0 +1,81 @@
+# 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::sahara
+#
+# Sahara 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::sahara (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ Service <| tag == 'sahara-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::sahara-api
+ class { '::tripleo::profile::base::sahara-engine':
+ sync_db => $pacemaker_master,
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ # Sahara
+ pacemaker::resource::service { $::sahara::params::api_service_name :
+ clone_params => 'interleave=true',
+ require => Pacemaker::Resource::Ocf['openstack-core'],
+ }
+ pacemaker::resource::service { $::sahara::params::engine_service_name :
+ clone_params => 'interleave=true',
+ }
+ pacemaker::constraint::base { 'keystone-then-sahara-api-constraint':
+ constraint_type => 'order',
+ first_resource => 'openstack-core-clone',
+ second_resource => "${::sahara::params::api_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::sahara::params::api_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::base { 'sahara-api-then-sahara-engine-constraint':
+ constraint_type => 'order',
+ first_resource => "${::sahara::params::api_service_name}-clone",
+ second_resource => "${::sahara::params::engine_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::sahara::params::api_service_name],
+ Pacemaker::Resource::Service[$::sahara::params::engine_service_name]],
+ }
+ }
+}