aboutsummaryrefslogtreecommitdiffstats
path: root/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'manifests')
-rw-r--r--manifests/certmonger/ca/local.pp37
-rw-r--r--manifests/certmonger/haproxy.pp75
-rw-r--r--manifests/firewall.pp18
-rw-r--r--manifests/firewall/service_rules.pp38
-rw-r--r--manifests/haproxy.pp214
-rw-r--r--manifests/haproxy/endpoint.pp18
-rw-r--r--manifests/host/sriov.pp27
-rw-r--r--manifests/host/sriov/numvfs_persistence.pp55
-rw-r--r--manifests/network/os_net_config.pp35
-rw-r--r--manifests/pacemaker/resource_restart_flag.pp35
-rw-r--r--manifests/profile/base/aodh.pp53
-rw-r--r--manifests/profile/base/aodh/api.pp49
-rw-r--r--manifests/profile/base/aodh/evaluator.pp37
-rw-r--r--manifests/profile/base/aodh/listener.pp37
-rw-r--r--manifests/profile/base/aodh/notifier.pp37
-rw-r--r--manifests/profile/base/ceilometer.pp10
-rw-r--r--manifests/profile/base/ceilometer/agent/central.pp2
-rw-r--r--manifests/profile/base/ceilometer/agent/compute.pp2
-rw-r--r--manifests/profile/base/ceilometer/agent/notification.pp2
-rw-r--r--manifests/profile/base/ceilometer/api.pp4
-rw-r--r--manifests/profile/base/ceilometer/collector.pp56
-rw-r--r--manifests/profile/base/ceilometer/expirer.pp5
-rw-r--r--manifests/profile/base/ceph.pp34
-rw-r--r--manifests/profile/base/ceph/client.pp1
-rw-r--r--manifests/profile/base/ceph/mon.pp19
-rw-r--r--manifests/profile/base/ceph/osd.pp3
-rw-r--r--manifests/profile/base/cinder.pp19
-rw-r--r--manifests/profile/base/cinder/api.pp19
-rw-r--r--manifests/profile/base/cinder/backup.pp36
-rw-r--r--manifests/profile/base/cinder/backup/ceph.pp36
-rw-r--r--manifests/profile/base/cinder/backup/swift.pp36
-rw-r--r--manifests/profile/base/cinder/scheduler.pp1
-rw-r--r--manifests/profile/base/cinder/volume.pp9
-rw-r--r--manifests/profile/base/cinder/volume/dellsc.pp1
-rw-r--r--manifests/profile/base/cinder/volume/eqlx.pp1
-rw-r--r--manifests/profile/base/cinder/volume/iscsi.pp22
-rw-r--r--manifests/profile/base/cinder/volume/netapp.pp1
-rw-r--r--manifests/profile/base/cinder/volume/nfs.pp11
-rw-r--r--manifests/profile/base/cinder/volume/rbd.pp11
-rw-r--r--manifests/profile/base/database/mongodb.pp5
-rw-r--r--manifests/profile/base/database/mongodbcommon.pp12
-rw-r--r--manifests/profile/base/database/mysql.pp86
-rw-r--r--manifests/profile/base/database/redis.pp12
-rw-r--r--manifests/profile/base/glance/api.pp10
-rw-r--r--manifests/profile/base/glance/registry.pp23
-rw-r--r--manifests/profile/base/gnocchi.pp34
-rw-r--r--manifests/profile/base/gnocchi/api.pp63
-rw-r--r--manifests/profile/base/gnocchi/metricd.pp34
-rw-r--r--manifests/profile/base/gnocchi/statsd.pp34
-rw-r--r--manifests/profile/base/haproxy.pp75
-rw-r--r--manifests/profile/base/heat.pp40
-rw-r--r--manifests/profile/base/heat/api.pp3
-rw-r--r--manifests/profile/base/heat/api_cfn.pp3
-rw-r--r--manifests/profile/base/heat/api_cloudwatch.pp3
-rw-r--r--manifests/profile/base/heat/engine.pp13
-rw-r--r--manifests/profile/base/horizon.pp50
-rw-r--r--manifests/profile/base/ironic.pp32
-rw-r--r--manifests/profile/base/ironic/api.pp4
-rw-r--r--manifests/profile/base/ironic/conductor.pp3
-rw-r--r--manifests/profile/base/keepalived.pp10
-rw-r--r--manifests/profile/base/kernel.pp30
-rw-r--r--manifests/profile/base/keystone.pp104
-rw-r--r--manifests/profile/base/manila/api.pp3
-rw-r--r--manifests/profile/base/manila/scheduler.pp15
-rw-r--r--manifests/profile/base/manila/share.pp4
-rw-r--r--manifests/profile/base/memcached.pp4
-rw-r--r--manifests/profile/base/mistral.pp51
-rw-r--r--manifests/profile/base/mistral/api.pp46
-rw-r--r--manifests/profile/base/mistral/engine.pp46
-rw-r--r--manifests/profile/base/mistral/executor.pp45
-rw-r--r--manifests/profile/base/monitoring/fluentd.pp39
-rw-r--r--manifests/profile/base/monitoring/rabbitmq.pp54
-rw-r--r--manifests/profile/base/monitoring/sensu.pp34
-rw-r--r--manifests/profile/base/monitoring/uchiwa.pp31
-rw-r--r--manifests/profile/base/neutron.pp9
-rw-r--r--manifests/profile/base/neutron/agents/midonet.pp52
-rw-r--r--manifests/profile/base/neutron/agents/nuage.pp58
-rw-r--r--manifests/profile/base/neutron/agents/ovn.pp38
-rw-r--r--manifests/profile/base/neutron/dhcp.pp15
-rw-r--r--manifests/profile/base/neutron/l3.pp6
-rw-r--r--manifests/profile/base/neutron/metadata.pp2
-rw-r--r--manifests/profile/base/neutron/midonet.pp85
-rw-r--r--manifests/profile/base/neutron/opendaylight.pp46
-rw-r--r--manifests/profile/base/neutron/ovs.pp1
-rw-r--r--manifests/profile/base/neutron/plugins/ml2.pp28
-rw-r--r--manifests/profile/base/neutron/plugins/ml2/opendaylight.pp54
-rw-r--r--manifests/profile/base/neutron/plugins/ml2/ovn.pp46
-rw-r--r--manifests/profile/base/neutron/plugins/nuage.pp17
-rw-r--r--manifests/profile/base/neutron/plugins/opencontrail.pp17
-rw-r--r--manifests/profile/base/neutron/plugins/ovs/opendaylight.pp73
-rw-r--r--manifests/profile/base/neutron/plugins/plumgrid.pp17
-rw-r--r--manifests/profile/base/neutron/server.pp32
-rw-r--r--manifests/profile/base/neutron/sriov.pp43
-rw-r--r--manifests/profile/base/nova.pp46
-rw-r--r--manifests/profile/base/nova/api.pp23
-rw-r--r--manifests/profile/base/nova/compute.pp14
-rw-r--r--manifests/profile/base/nova/compute/ironic.pp34
-rw-r--r--manifests/profile/base/nova/compute/libvirt.pp1
-rw-r--r--manifests/profile/base/nova/conductor.pp2
-rw-r--r--manifests/profile/base/nova/consoleauth.pp2
-rw-r--r--manifests/profile/base/nova/libvirt.pp1
-rw-r--r--manifests/profile/base/nova/scheduler.pp2
-rw-r--r--manifests/profile/base/nova/vncproxy.pp2
-rw-r--r--manifests/profile/base/pacemaker.pp90
-rw-r--r--manifests/profile/base/rabbitmq.pp27
-rw-r--r--manifests/profile/base/sahara.pp19
-rw-r--r--manifests/profile/base/sahara/api.pp7
-rw-r--r--manifests/profile/base/sahara/engine.pp21
-rw-r--r--manifests/profile/base/snmp.pp30
-rw-r--r--manifests/profile/base/swift/add_devices.pp58
-rw-r--r--manifests/profile/base/swift/proxy.pp15
-rw-r--r--manifests/profile/base/swift/ringbuilder.pp80
-rw-r--r--manifests/profile/base/swift/storage.pp12
-rw-r--r--manifests/profile/base/trove/api.pp50
-rw-r--r--manifests/profile/base/trove/conductor.pp36
-rw-r--r--manifests/profile/base/trove/taskmanager.pp36
-rw-r--r--manifests/profile/base/ui.pp24
-rw-r--r--manifests/profile/pacemaker/apache.pp57
-rw-r--r--manifests/profile/pacemaker/ceilometer.pp56
-rw-r--r--manifests/profile/pacemaker/ceilometer/agent/central.pp1
-rw-r--r--manifests/profile/pacemaker/ceilometer/agent/notification.pp1
-rw-r--r--manifests/profile/pacemaker/ceilometer/api.pp13
-rw-r--r--manifests/profile/pacemaker/ceilometer/collector.pp11
-rw-r--r--manifests/profile/pacemaker/cinder/api.pp5
-rw-r--r--manifests/profile/pacemaker/cinder/backup.pp60
-rw-r--r--manifests/profile/pacemaker/cinder/scheduler.pp17
-rw-r--r--manifests/profile/pacemaker/cinder/volume.pp25
-rw-r--r--manifests/profile/pacemaker/core.pp58
-rw-r--r--manifests/profile/pacemaker/database/mongodb.pp5
-rw-r--r--manifests/profile/pacemaker/database/mysql.pp191
-rw-r--r--manifests/profile/pacemaker/database/redis.pp13
-rw-r--r--manifests/profile/pacemaker/glance.pp27
-rw-r--r--manifests/profile/pacemaker/gnocchi.pp97
-rw-r--r--manifests/profile/pacemaker/gnocchi/api.pp32
-rw-r--r--manifests/profile/pacemaker/gnocchi/metricd.pp45
-rw-r--r--manifests/profile/pacemaker/gnocchi/statsd.pp45
-rw-r--r--manifests/profile/pacemaker/haproxy.pp17
-rw-r--r--manifests/profile/pacemaker/heat.pp12
-rw-r--r--manifests/profile/pacemaker/heat/api.pp5
-rw-r--r--manifests/profile/pacemaker/heat/api_cfn.pp5
-rw-r--r--manifests/profile/pacemaker/heat/api_cloudwatch.pp5
-rw-r--r--manifests/profile/pacemaker/heat/engine.pp9
-rw-r--r--manifests/profile/pacemaker/keystone.pp20
-rw-r--r--manifests/profile/pacemaker/manila.pp145
-rw-r--r--manifests/profile/pacemaker/memcached.pp1
-rw-r--r--manifests/profile/pacemaker/neutron.pp60
-rw-r--r--manifests/profile/pacemaker/neutron/dhcp.pp11
-rw-r--r--manifests/profile/pacemaker/neutron/l3.pp11
-rw-r--r--manifests/profile/pacemaker/neutron/metadata.pp11
-rw-r--r--manifests/profile/pacemaker/neutron/midonet.pp10
-rw-r--r--manifests/profile/pacemaker/neutron/ovs.pp11
-rw-r--r--manifests/profile/pacemaker/neutron/plugins/ml2.pp16
-rw-r--r--manifests/profile/pacemaker/neutron/plugins/nuage.pp15
-rw-r--r--manifests/profile/pacemaker/neutron/plugins/opencontrail.pp15
-rw-r--r--manifests/profile/pacemaker/neutron/plugins/plumgrid.pp15
-rw-r--r--manifests/profile/pacemaker/neutron/server.pp1
-rw-r--r--manifests/profile/pacemaker/nova.pp10
-rw-r--r--manifests/profile/pacemaker/nova/api.pp48
-rw-r--r--manifests/profile/pacemaker/nova/conductor.pp34
-rw-r--r--manifests/profile/pacemaker/nova/consoleauth.pp44
-rw-r--r--manifests/profile/pacemaker/nova/scheduler.pp11
-rw-r--r--manifests/profile/pacemaker/nova/vncproxy.pp11
-rw-r--r--manifests/profile/pacemaker/rabbitmq.pp17
-rw-r--r--manifests/profile/pacemaker/sahara.pp48
-rw-r--r--manifests/profile/pacemaker/sahara/api.pp49
-rw-r--r--manifests/profile/pacemaker/sahara/engine.pp48
-rw-r--r--manifests/trusted_ca.pp39
-rw-r--r--manifests/trusted_cas.pp28
168 files changed, 4095 insertions, 878 deletions
diff --git a/manifests/certmonger/ca/local.pp b/manifests/certmonger/ca/local.pp
new file mode 100644
index 0000000..ea08dec
--- /dev/null
+++ b/manifests/certmonger/ca/local.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::certmonger::ca::local
+#
+# Does the necessary action to extract and trust certmonger's local CA.
+#
+# === Parameters:
+#
+# [*ca_pem*]
+# (optional) PEM file that will contain the local CA certificate.
+# Defaults to '/etc/pki/ca-trust/source/anchors/cm-local-ca.pem'
+#
+class tripleo::certmonger::ca::local(
+ $ca_pem = '/etc/pki/ca-trust/source/anchors/cm-local-ca.pem',
+){
+ $ca_pkcs12 = '/var/lib/certmonger/local/creds'
+ $extract_cmd = "openssl pkcs12 -in ${ca_pkcs12} -out ${ca_pem} -nokeys -nodes -passin pass:''"
+ $trust_ca_cmd = 'update-ca-trust extract'
+ exec { 'extract-and-trust-ca':
+ command => "${extract_cmd} && ${trust_ca_cmd}",
+ path => '/usr/bin',
+ creates => $ca_pem,
+ require => Package['certmonger'],
+ }
+}
diff --git a/manifests/certmonger/haproxy.pp b/manifests/certmonger/haproxy.pp
new file mode 100644
index 0000000..2b738e6
--- /dev/null
+++ b/manifests/certmonger/haproxy.pp
@@ -0,0 +1,75 @@
+# 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.
+#
+# == Resource: tripleo::certmonger::haproxy
+#
+# Request a certificate for the HAProxy service and does the necessary logic to
+# get it into a format that the service understands.
+#
+# === Parameters
+#
+# [*service_pem*]
+# The file in PEM format that the HAProxy service will use as a certificate.
+#
+# [*service_certificate*]
+# The certificate file that certmonger will be tracking.
+#
+# [*service_key*]
+# The key file that certmonger will use for the certificate.
+#
+# [*hostname*]
+# The hostname that certmonger will use as the common name for the
+# certificate.
+#
+# [*postsave_cmd*]
+# The post-save-command that certmonger will use once it renews the
+# certificate.
+#
+# [*principal*]
+# The haproxy service principal that is set for HAProxy in kerberos.
+#
+define tripleo::certmonger::haproxy (
+ $service_pem,
+ $service_certificate,
+ $service_key,
+ $hostname,
+ $postsave_cmd,
+ $principal = undef,
+){
+ certmonger_certificate { "${title}-cert":
+ hostname => $hostname,
+ certfile => $service_certificate,
+ keyfile => $service_key,
+ postsave_cmd => $postsave_cmd,
+ principal => $principal,
+ }
+ concat { $service_pem :
+ ensure => present,
+ mode => '0640',
+ owner => 'haproxy',
+ group => 'haproxy',
+ }
+ concat::fragment { "${title}-cert-fragment":
+ target => $service_pem,
+ source => $service_certificate,
+ order => '01',
+ require => Certmonger_certificate["${title}-cert"],
+ }
+ concat::fragment { "${title}-key-fragment":
+ target => $service_pem,
+ source => $service_key,
+ order => 10,
+ require => Certmonger_certificate["${title}-cert"],
+ }
+}
diff --git a/manifests/firewall.pp b/manifests/firewall.pp
index 7698881..edcb5e7 100644
--- a/manifests/firewall.pp
+++ b/manifests/firewall.pp
@@ -86,6 +86,24 @@ class tripleo::firewall(
'stage' => 'runtime',
'firewall_settings' => $firewall_post_extras,
})
+
+ # Allow composable services to load their own custom
+ # example with Hiera.
+ # NOTE(dprince): In the future when we have a better hiera
+ # heat hook we might refactor this to use hiera's merging
+ # capabilities instead. Until then rolling up the flat service
+ # keys and dynamically creating firewall rules for each service
+ # will allow us to compose and should work fine.
+ #
+ # Each service can load its rules by using this form:
+ #
+ # tripleo.<service name with underscores>.firewall_rules:
+ # '300 allow custom application 1':
+ # dport: 999
+ # proto: udp
+ # action: accept
+ $service_names = reject(hiera('service_names', []), '^$')
+ tripleo::firewall::service_rules { $service_names: }
}
}
diff --git a/manifests/firewall/service_rules.pp b/manifests/firewall/service_rules.pp
new file mode 100644
index 0000000..4739f16
--- /dev/null
+++ b/manifests/firewall/service_rules.pp
@@ -0,0 +1,38 @@
+# 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.
+#
+# == Define: tripleo::firewall::service_rules
+#
+# Define used to create firewall rules for composable services.
+#
+# === Parameters:
+#
+# [*service_name*]
+# (optional) The service_name to load firewall rules for.
+# Defaults to $title
+#
+define tripleo::firewall::service_rules ($service_name = $title) {
+
+ $underscore_name = regsubst($service_name, '-', '_')
+
+ # This allows each composable service to load its own custom rules by
+ # creating its own flat hiera key named:
+ # tripleo.<service name with underscores>.firewall_rules
+ $service_firewall_rules = hiera("tripleo.${underscore_name}.firewall_rules", {})
+
+ if !empty($service_firewall_rules) {
+ create_resources('tripleo::firewall::rule', $service_firewall_rules)
+ }
+
+}
diff --git a/manifests/haproxy.pp b/manifests/haproxy.pp
index e3e48ce..a79bf14 100644
--- a/manifests/haproxy.pp
+++ b/manifests/haproxy.pp
@@ -111,91 +111,99 @@
#
# [*keystone_admin*]
# (optional) Enable or not Keystone Admin API binding
-# Defaults to false
+# Defaults to hiera('keystone_enabled', false)
#
# [*keystone_public*]
# (optional) Enable or not Keystone Public API binding
-# Defaults to false
+# Defaults to hiera('keystone_enabled', false)
#
# [*neutron*]
# (optional) Enable or not Neutron API binding
-# Defaults to false
+# Defaults to hiera('neutron_api_enabled', false)
#
# [*cinder*]
# (optional) Enable or not Cinder API binding
-# Defaults to false
+# Defaults to hiera('cinder_api_enabled', false)
#
# [*manila*]
# (optional) Enable or not Manila API binding
-# Defaults to false
+# Defaults to hiera('manila_api_enabled', false)
#
# [*sahara*]
# (optional) Enable or not Sahara API binding
-# defaults to false
+# defaults to hiera('sahara_api_enabled', false)
#
# [*trove*]
# (optional) Enable or not Trove API binding
-# defaults to false
+# defaults to hiera('trove_api_enabled', false)
#
# [*glance_api*]
# (optional) Enable or not Glance API binding
-# Defaults to false
+# Defaults to hiera('glance_api_enabled', false)
#
# [*glance_registry*]
# (optional) Enable or not Glance registry binding
-# Defaults to false
+# Defaults to hiera('glance_registry_enabled', false)
#
# [*nova_osapi*]
# (optional) Enable or not Nova API binding
-# Defaults to false
+# Defaults to hiera('nova_api_enabled', false)
#
# [*nova_metadata*]
# (optional) Enable or not Nova metadata binding
-# Defaults to false
+# Defaults to hiera('nova_api_enabled', false)
#
# [*nova_novncproxy*]
# (optional) Enable or not Nova novncproxy binding
-# Defaults to false
+# Defaults to hiera('nova_vncproxy_enabled', false)
#
# [*ceilometer*]
# (optional) Enable or not Ceilometer API binding
-# Defaults to false
+# Defaults to hiera('ceilometer_api_enabled', false)
#
# [*aodh*]
# (optional) Enable or not Aodh API binding
-# Defaults to false
+# Defaults to hiera('aodh_api_enabled', false)
#
# [*gnocchi*]
# (optional) Enable or not Gnocchi API binding
-# Defaults to false
+# Defaults to hiera('gnocchi_api_enabled', false)
+#
+# [*mistral*]
+# (optional) Enable or not Mistral API binding
+# Defaults to hiera('mistral_api_enabled', false)
#
# [*swift_proxy_server*]
# (optional) Enable or not Swift API binding
-# Defaults to false
+# Defaults to hiera('swift_proxy_enabled', false)
#
# [*heat_api*]
# (optional) Enable or not Heat API binding
-# Defaults to false
+# Defaults to hiera('heat_api_enabled', false)
#
# [*heat_cloudwatch*]
# (optional) Enable or not Heat Cloudwatch API binding
-# Defaults to false
+# Defaults to hiera('heat_api_cloudwatch_enabled', false)
#
# [*heat_cfn*]
# (optional) Enable or not Heat CFN API binding
-# Defaults to false
+# Defaults to hiera('heat_api_cfn_enabled', false)
#
# [*horizon*]
# (optional) Enable or not Horizon dashboard binding
-# Defaults to false
+# Defaults to hiera('horizon_enabled', false)
#
# [*ironic*]
# (optional) Enable or not Ironic API binding
-# Defaults to false
+# Defaults to hiera('ironic_enabled', false)
+#
+# [*ironic_inspector*]
+# (optional) Enable or not Ironic Inspector API binding
+# Defaults to hiera('ironic_inspector_enabled', false)
#
# [*mysql*]
# (optional) Enable or not MySQL Galera binding
-# Defaults to false
+# Defaults to hiera('mysql_enabled', false)
#
# [*mysql_clustercheck*]
# (optional) Enable check via clustercheck for mysql
@@ -207,7 +215,7 @@
#
# [*redis*]
# (optional) Enable or not Redis binding
-# Defaults to false
+# Defaults to hiera('redis_enabled', false)
#
# [*redis_password*]
# (optional) Password for Redis authentication, eventually needed by the
@@ -218,6 +226,14 @@
# (optional) Enable or not MidoNet API binding
# Defaults to false
#
+# [*zaqar_api*]
+# (optional) Enable or not Zaqar Api binding
+# Defaults to hiera('zaqar_api_enabled', false)
+#
+# [*opendaylight*]
+# (optional) Enable or not OpenDaylight binding
+# Defaults to hiera('opendaylight_api_enabled', false)
+#
# [*service_ports*]
# (optional) Hash that contains the values to override from the service ports
# The available keys to modify the services' ports are:
@@ -232,6 +248,8 @@
# 'glance_registry_port' (Defaults to 9191)
# 'gnocchi_api_port' (Defaults to 8041)
# 'gnocchi_api_ssl_port' (Defaults to 13041)
+# 'mistral_api_port' (Defaults to 8989)
+# 'mistral_api_ssl_port' (Defaults to 13989)
# 'heat_api_port' (Defaults to 8004)
# 'heat_api_ssl_port' (Defaults to 13004)
# 'heat_cfn_port' (Defaults to 8000)
@@ -240,6 +258,8 @@
# 'heat_cw_ssl_port' (Defaults to 13003)
# 'ironic_api_port' (Defaults to 6385)
# 'ironic_api_ssl_port' (Defaults to 13385)
+# 'ironic_inspector_port' (Defaults to 5050)
+# 'ironic_inspector_ssl_port' (Defaults to 13050)
# 'keystone_admin_api_port' (Defaults to 35357)
# 'keystone_admin_api_ssl_port' (Defaults to 13357)
# 'keystone_public_api_port' (Defaults to 5000)
@@ -259,6 +279,8 @@
# 'swift_proxy_ssl_port' (Defaults to 13808)
# 'trove_api_port' (Defaults to 8779)
# 'trove_api_ssl_port' (Defaults to 13779)
+# 'zaqar_api_port' (Defaults to 8888)
+# 'zaqar_api_ssl_port' (Defaults to 13888)
# Defaults to {}
#
class tripleo::haproxy (
@@ -281,33 +303,37 @@ class tripleo::haproxy (
$ssl_cipher_suite = '!SSLv2:kEECDH:kRSA:kEDH:kPSK:+3DES:!aNULL:!eNULL:!MD5:!EXP:!RC4:!SEED:!IDEA:!DES',
$ssl_options = 'no-sslv3',
$haproxy_stats_certificate = undef,
- $keystone_admin = false,
- $keystone_public = false,
- $neutron = false,
- $cinder = false,
- $sahara = false,
- $trove = false,
- $manila = false,
- $glance_api = false,
- $glance_registry = false,
- $nova_osapi = false,
- $nova_metadata = false,
- $nova_novncproxy = false,
- $ceilometer = false,
- $aodh = false,
- $gnocchi = false,
- $swift_proxy_server = false,
- $heat_api = false,
- $heat_cloudwatch = false,
- $heat_cfn = false,
- $horizon = false,
- $ironic = false,
- $mysql = false,
+ $keystone_admin = hiera('keystone_enabled', false),
+ $keystone_public = hiera('keystone_enabled', false),
+ $neutron = hiera('neutron_api_enabled', false),
+ $cinder = hiera('cinder_api_enabled', false),
+ $manila = hiera('manila_api_enabled', false),
+ $sahara = hiera('sahara_api_enabled', false),
+ $trove = hiera('trove_api_enabled', false),
+ $glance_api = hiera('glance_api_enabled', false),
+ $glance_registry = hiera('glance_registry_enabled', false),
+ $nova_osapi = hiera('nova_api_enabled', false),
+ $nova_metadata = hiera('nova_api_enabled', false),
+ $nova_novncproxy = hiera('nova_vncproxy_enabled', false),
+ $ceilometer = hiera('ceilometer_api_enabled', false),
+ $aodh = hiera('aodh_api_enabled', false),
+ $gnocchi = hiera('gnocchi_api_enabled', false),
+ $mistral = hiera('mistral_api_enabled', false),
+ $swift_proxy_server = hiera('swift_proxy_enabled', false),
+ $heat_api = hiera('heat_api_enabled', false),
+ $heat_cloudwatch = hiera('heat_api_cloudwatch_enabled', false),
+ $heat_cfn = hiera('heat_api_cfn_enabled', false),
+ $horizon = hiera('horizon_enabled', false),
+ $ironic = hiera('ironic_api_enabled', false),
+ $ironic_inspector = hiera('ironic_inspector_enabled', false),
+ $mysql = hiera('mysql_enabled', false),
$mysql_clustercheck = false,
$rabbitmq = false,
- $redis = false,
+ $redis = hiera('redis_enabled', false),
$redis_password = undef,
$midonet_api = false,
+ $zaqar_api = hiera('zaqar_api_enabled', false),
+ $opendaylight = hiera('opendaylight_api_enabled', false),
$service_ports = {}
) {
$default_service_ports = {
@@ -322,6 +348,8 @@ class tripleo::haproxy (
glance_registry_port => 9191,
gnocchi_api_port => 8041,
gnocchi_api_ssl_port => 13041,
+ mistral_api_port => 8989,
+ mistral_api_ssl_port => 13989,
heat_api_port => 8004,
heat_api_ssl_port => 13004,
heat_cfn_port => 8000,
@@ -330,6 +358,8 @@ class tripleo::haproxy (
heat_cw_ssl_port => 13003,
ironic_api_port => 6385,
ironic_api_ssl_port => 13385,
+ ironic_inspector_port => 5050,
+ ironic_inspector_ssl_port => 13050,
keystone_admin_api_port => 35357,
keystone_admin_api_ssl_port => 13357,
keystone_public_api_port => 5000,
@@ -349,6 +379,8 @@ class tripleo::haproxy (
swift_proxy_ssl_port => 13808,
trove_api_port => 8779,
trove_api_ssl_port => 13779,
+ zaqar_api_port => 8888,
+ zaqar_api_ssl_port => 13888,
}
$ports = merge($default_service_ports, $service_ports)
@@ -490,6 +522,21 @@ class tripleo::haproxy (
}
if $keystone_public {
+ $keystone_listen_opts = {
+ 'http-request' => [
+ 'set-header X-Forwarded-Proto https if { ssl_fc }',
+ 'set-header X-Forwarded-Proto http if !{ ssl_fc }'],
+ }
+ if $service_certificate {
+ $keystone_public_tls_listen_opts = {
+ 'rsprep' => '^Location:\ http://(.*) Location:\ https://\1',
+ # NOTE(jaosorior): We always redirect to https for the public_virtual_ip.
+ 'redirect' => "scheme https code 301 if { hdr(host) -i ${public_virtual_ip} } !{ ssl_fc }",
+ 'option' => 'forwardfor',
+ }
+ } else {
+ $keystone_public_tls_listen_opts = {}
+ }
::tripleo::haproxy::endpoint { 'keystone_public':
public_virtual_ip => $public_virtual_ip,
internal_ip => hiera('keystone_public_api_vip', $controller_virtual_ip),
@@ -497,11 +544,7 @@ class tripleo::haproxy (
ip_addresses => hiera('keystone_public_api_node_ips', $controller_hosts_real),
server_names => $controller_hosts_names_real,
mode => 'http',
- listen_options => {
- 'http-request' => [
- 'set-header X-Forwarded-Proto https if { ssl_fc }',
- 'set-header X-Forwarded-Proto http if !{ ssl_fc }'],
- },
+ listen_options => merge($keystone_listen_opts, $keystone_public_tls_listen_opts),
public_ssl_port => $ports[keystone_public_api_ssl_port],
}
}
@@ -575,6 +618,12 @@ class tripleo::haproxy (
ip_addresses => hiera('glance_api_node_ips', $controller_hosts_real),
server_names => $controller_hosts_names_real,
public_ssl_port => $ports[glance_api_ssl_port],
+ mode => 'http',
+ listen_options => {
+ 'http-request' => [
+ 'set-header X-Forwarded-Proto https if { ssl_fc }',
+ 'set-header X-Forwarded-Proto http if !{ ssl_fc }'],
+ },
}
}
@@ -662,6 +711,17 @@ class tripleo::haproxy (
}
}
+ if $mistral {
+ ::tripleo::haproxy::endpoint { 'mistral':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('mistral_api_vip', $controller_virtual_ip),
+ service_port => $ports[mistral_api_port],
+ ip_addresses => hiera('mistral_api_node_ips', $controller_hosts_real),
+ server_names => $controller_hosts_names_real,
+ public_ssl_port => $ports[mistral_api_ssl_port],
+ }
+ }
+
if $swift_proxy_server {
::tripleo::haproxy::endpoint { 'swift_proxy_server':
public_virtual_ip => $public_virtual_ip,
@@ -754,6 +814,17 @@ class tripleo::haproxy (
}
}
+ if $ironic_inspector {
+ ::tripleo::haproxy::endpoint { 'ironic-inspector':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('ironic_inspector_vip', $controller_virtual_ip),
+ service_port => $ports[ironic_inspector_port],
+ ip_addresses => hiera('ironic_inspector_node_ips', $controller_hosts_real),
+ server_names => $controller_hosts_names_real,
+ public_ssl_port => $ports[ironic_inspector_ssl_port],
+ }
+ }
+
if $mysql_clustercheck {
$mysql_listen_options = {
'option' => [ 'tcpka', 'httpchk' ],
@@ -815,7 +886,12 @@ class tripleo::haproxy (
options => {
'balance' => 'first',
'option' => ['tcp-check',],
- 'tcp-check' => union($redis_tcp_check_options, ['send PING\r\n','expect string +PONG','send info\ replication\r\n','expect string role:master','send QUIT\r\n','expect string +OK']),
+ 'tcp-check' => union($redis_tcp_check_options, ['send PING\r\n',
+ 'expect string +PONG',
+ 'send info\ replication\r\n',
+ 'expect string role:master',
+ 'send QUIT\r\n',
+ 'expect string +OK']),
},
collect_exported => false,
}
@@ -847,4 +923,38 @@ class tripleo::haproxy (
options => $haproxy_member_options,
}
}
+ if $zaqar_api {
+ ::tripleo::haproxy::endpoint { 'zaqar_api':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('zaqar_api_vip', $controller_virtual_ip),
+ service_port => $ports[zaqar_api_port],
+ ip_addresses => hiera('zaqar_api_node_ips', $controller_hosts_real),
+ server_names => $controller_hosts_names_real,
+ mode => 'http',
+ public_ssl_port => $ports[zaqar_api_ssl_port],
+ }
+ }
+
+ $opendaylight_api_vip = hiera('opendaylight_api_vip', $controller_virtual_ip)
+ $opendaylight_bind_opts = {
+ "${opendaylight_api_vip}:8081" => [],
+ "${public_virtual_ip}:8081" => [],
+ }
+
+ if $opendaylight {
+ haproxy::listen { 'opendaylight':
+ bind => $opendaylight_bind_opts,
+ options => {
+ 'balance' => 'source',
+ },
+ collect_exported => false,
+ }
+ haproxy::balancermember { 'opendaylight':
+ listening_service => 'opendaylight',
+ ports => '8081',
+ ipaddresses => hiera('opendaylight_api_node_ips', $controller_hosts_real),
+ server_names => $controller_hosts_names_real,
+ options => ['check', 'inter 2000', 'rise 2', 'fall 5'],
+ }
+ }
}
diff --git a/manifests/haproxy/endpoint.pp b/manifests/haproxy/endpoint.pp
index 94bfcff..b7403a4 100644
--- a/manifests/haproxy/endpoint.pp
+++ b/manifests/haproxy/endpoint.pp
@@ -88,7 +88,8 @@ define tripleo::haproxy::endpoint (
# service exposed to the public network
if $public_certificate {
- $public_bind_opts = list_to_hash(suffix(any2array($public_virtual_ip), ":${public_ssl_port}"), union($haproxy_listen_bind_param, ['ssl', 'crt', $public_certificate]))
+ $public_bind_opts = list_to_hash(suffix(any2array($public_virtual_ip), ":${public_ssl_port}"),
+ union($haproxy_listen_bind_param, ['ssl', 'crt', $public_certificate]))
} else {
$public_bind_opts = list_to_hash(suffix(any2array($public_virtual_ip), ":${service_port}"), $haproxy_listen_bind_param)
}
@@ -98,7 +99,8 @@ define tripleo::haproxy::endpoint (
}
if $internal_certificate {
- $internal_bind_opts = list_to_hash(suffix(any2array($internal_ip), ":${service_port}"), union($haproxy_listen_bind_param, ['ssl', 'crt', $public_certificate]))
+ $internal_bind_opts = list_to_hash(suffix(any2array($internal_ip), ":${service_port}"),
+ union($haproxy_listen_bind_param, ['ssl', 'crt', $public_certificate]))
} else {
$internal_bind_opts = list_to_hash(suffix(any2array($internal_ip), ":${service_port}"), $haproxy_listen_bind_param)
}
@@ -117,4 +119,16 @@ define tripleo::haproxy::endpoint (
server_names => $server_names,
options => $member_options,
}
+ if hiera('manage_firewall', true) {
+ include ::tripleo::firewall
+ $firewall_rules = {
+ "100 ${name}_haproxy" => {
+ 'dport' => $service_port,
+ },
+ "100 ${name}_haproxy_ssl" => {
+ 'dport' => $public_ssl_port,
+ },
+ }
+ create_resources('tripleo::firewall::rule', $firewall_rules)
+ }
}
diff --git a/manifests/host/sriov.pp b/manifests/host/sriov.pp
new file mode 100644
index 0000000..a30db42
--- /dev/null
+++ b/manifests/host/sriov.pp
@@ -0,0 +1,27 @@
+# == Class: tripleo::host::sriov
+#
+# Configures host configuration for the SR-IOV interfaces
+#
+# === Parameters
+#
+# [*number_of_vfs*]
+# (optional) List of <physical_network>:<number_of_vfs> specifying the number
+# VFs to be exposed per physical interface.
+# For example, to configure two interface with number of VFs, specify
+# it as ['eth1:4','eth2:10']
+# Defaults to []
+#
+class tripleo::host::sriov (
+ $number_of_vfs = [],
+) {
+
+ if !empty($number_of_vfs) {
+ sriov_vf_config { $number_of_vfs: ensure => present }
+
+ # the numvfs configuration needs to be persisted for every boot
+ tripleo::host::sriov::numvfs_persistence {'persistent_numvfs':
+ vf_defs => $number_of_vfs,
+ content_string => "#!/bin/bash\n"
+ }
+ }
+}
diff --git a/manifests/host/sriov/numvfs_persistence.pp b/manifests/host/sriov/numvfs_persistence.pp
new file mode 100644
index 0000000..1ee402c
--- /dev/null
+++ b/manifests/host/sriov/numvfs_persistence.pp
@@ -0,0 +1,55 @@
+#
+# tripleo::host::sriov::numvfs_persistence used by tripleo::host::sriov
+#
+# === Parameters:
+#
+# [*vf_defs*]
+# (required) Array of of <physical_interface>:<numvfs>.
+# Example: ['eth1:10','eth2:8']
+#
+# [*content_string*]
+# (required) String which shall be written to the script file.
+#
+define tripleo::host::sriov::numvfs_persistence(
+ $vf_defs,
+ $content_string
+){
+ # Since reduce isn't available, we use recursion to iterate each entries of
+ # "physical_interface:vfs" and accumulate the content that needs to be
+ # written to the script file.
+ include ::stdlib
+
+ if empty($vf_defs) {
+ file { '/etc/sysconfig/allocate_vfs':
+ ensure => file,
+ content => $content_string,
+ group => 'root',
+ mode => '0755',
+ owner => 'root',
+ }
+
+ file { '/sbin/ifup-local':
+ group => 'root',
+ mode => '0755',
+ owner => 'root',
+ content => '#!/bin/bash',
+ replace => false
+ }
+
+ file_line { 'call_ifup-local':
+ path => '/sbin/ifup-local',
+ line => '/etc/sysconfig/allocate_vfs $1',
+ require => File['/sbin/ifup-local'],
+ }
+ } else {
+ $vfspec = split($vf_defs[0], ':')
+ $interface = $vfspec[0]
+ $count = $vfspec[1]
+ $vfdef_str = "${content_string}[ \"${interface}\" == \"\$1\" ] && echo ${count} > /sys/class/net/${interface}/device/sriov_numvfs\n"
+ tripleo::host::sriov::numvfs_persistence{"mapped ${interface}":
+ vf_defs => delete_at($vf_defs, 0),
+ content_string => $vfdef_str
+ }
+ }
+}
+
diff --git a/manifests/network/os_net_config.pp b/manifests/network/os_net_config.pp
new file mode 100644
index 0000000..7e07f6c
--- /dev/null
+++ b/manifests/network/os_net_config.pp
@@ -0,0 +1,35 @@
+# Copyright 2016 Red Hat, Inc.
+# All Rights Reserved.
+#
+# 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::network::os_net_config
+#
+# Configure os-net-config for TripleO.
+#
+class tripleo::network::os_net_config {
+
+ include ::vswitch::ovs
+ ensure_packages('os-net-config', { ensure => present })
+
+ exec { 'os-net-config':
+ command => '/bin/os-net-config -c /etc/os-net-config/config.json -v --detailed-exit-codes',
+ returns => [0, 2],
+ require => [
+ Package['os-net-config'],
+ Package['openvswitch'],
+ Service['openvswitch'],
+ ],
+ }
+
+}
diff --git a/manifests/pacemaker/resource_restart_flag.pp b/manifests/pacemaker/resource_restart_flag.pp
new file mode 100644
index 0000000..aded802
--- /dev/null
+++ b/manifests/pacemaker/resource_restart_flag.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.
+#
+# == Define: tripleo::pacemaker::resource_restart_flag
+#
+# Creates a flag file on the filesystem to signify that a pacemaker
+# resource needs restarting (usually to pick up config changes after
+# they've been written on all nodes).
+#
+# === Parameters
+#
+# [*title*]
+# The resource name in Pacemaker to restart. If it's a cloned
+# resource, the name should include the '-clone' part.
+#
+define tripleo::pacemaker::resource_restart_flag() {
+
+ exec { "${title} resource restart flag":
+ command => "touch /var/lib/tripleo/pacemaker-restarts/${title}",
+ path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
+ refreshonly => true,
+ }
+
+}
diff --git a/manifests/profile/base/aodh.pp b/manifests/profile/base/aodh.pp
new file mode 100644
index 0000000..07c0a88
--- /dev/null
+++ b/manifests/profile/base/aodh.pp
@@ -0,0 +1,53 @@
+# 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::aodh
+#
+# aodh profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+class tripleo::profile::base::aodh (
+ $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+) {
+
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $step >= 3 and $sync_db {
+ include ::aodh::db::mysql
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::aodh
+ include ::aodh::auth
+ include ::aodh::config
+ include ::aodh::client
+ include ::aodh::db::sync
+ }
+
+}
diff --git a/manifests/profile/base/aodh/api.pp b/manifests/profile/base/aodh/api.pp
new file mode 100644
index 0000000..2dcf802
--- /dev/null
+++ b/manifests/profile/base/aodh/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::aodh::api
+#
+# aodh API profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*enable_combination_alarms*]
+# (optional) Setting to enable combination alarms
+# Defaults to: false
+#
+
+class tripleo::profile::base::aodh::api (
+ $step = hiera('step'),
+ $enable_combination_alarms = false,
+) {
+
+ include ::tripleo::profile::base::aodh
+
+ if $step >= 4 {
+ include ::aodh::api
+ include ::aodh::wsgi::apache
+
+ #NOTE: Combination alarms are deprecated in newton and disabled by default.
+ # we need a way to override this setting for users still using this type
+ # of alarms.
+ aodh_config {
+ 'api/enable_combination_alarms' : value => $enable_combination_alarms;
+ }
+ }
+}
diff --git a/manifests/profile/base/aodh/evaluator.pp b/manifests/profile/base/aodh/evaluator.pp
new file mode 100644
index 0000000..610d5a8
--- /dev/null
+++ b/manifests/profile/base/aodh/evaluator.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::base::aodh::evaluator
+#
+# aodh evaluator 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::aodh::evaluator (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::aodh
+
+ if $step >= 4 {
+ include ::aodh::evaluator
+ }
+
+}
+
diff --git a/manifests/profile/base/aodh/listener.pp b/manifests/profile/base/aodh/listener.pp
new file mode 100644
index 0000000..d36e1bb
--- /dev/null
+++ b/manifests/profile/base/aodh/listener.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::base::aodh::listener
+#
+# aodh listener 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::aodh::listener (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::aodh
+
+ if $step >= 4 {
+ include ::aodh::listener
+ }
+
+}
+
diff --git a/manifests/profile/base/aodh/notifier.pp b/manifests/profile/base/aodh/notifier.pp
new file mode 100644
index 0000000..d2a3945
--- /dev/null
+++ b/manifests/profile/base/aodh/notifier.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::base::aodh::notifier
+#
+# aodh notifier 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::aodh::notifier (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::aodh
+
+ if $step >= 4 {
+ include ::aodh::notifier
+ }
+
+}
+
diff --git a/manifests/profile/base/ceilometer.pp b/manifests/profile/base/ceilometer.pp
index 97e1bb8..88818de 100644
--- a/manifests/profile/base/ceilometer.pp
+++ b/manifests/profile/base/ceilometer.pp
@@ -23,18 +23,12 @@
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
class tripleo::profile::base::ceilometer (
- $step = hiera('step'),
- $sync_db = true,
+ $step = hiera('step'),
) {
- if $step >= 4 or ($step >= 3 and $sync_db) {
+ if $step >= 3 {
include ::ceilometer
- include ::ceilometer::db
include ::ceilometer::config
}
diff --git a/manifests/profile/base/ceilometer/agent/central.pp b/manifests/profile/base/ceilometer/agent/central.pp
index 02d6d1a..c91e610 100644
--- a/manifests/profile/base/ceilometer/agent/central.pp
+++ b/manifests/profile/base/ceilometer/agent/central.pp
@@ -23,11 +23,9 @@
# for more details.
# Defaults to hiera('step')
#
-
class tripleo::profile::base::ceilometer::agent::central (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceilometer
if $step >= 4 {
diff --git a/manifests/profile/base/ceilometer/agent/compute.pp b/manifests/profile/base/ceilometer/agent/compute.pp
index 3a7aa50..749bc64 100644
--- a/manifests/profile/base/ceilometer/agent/compute.pp
+++ b/manifests/profile/base/ceilometer/agent/compute.pp
@@ -23,11 +23,9 @@
# for more details.
# Defaults to hiera('step')
#
-
class tripleo::profile::base::ceilometer::agent::compute (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceilometer
if $step >= 4 {
diff --git a/manifests/profile/base/ceilometer/agent/notification.pp b/manifests/profile/base/ceilometer/agent/notification.pp
index 83a0234..7fe8e81 100644
--- a/manifests/profile/base/ceilometer/agent/notification.pp
+++ b/manifests/profile/base/ceilometer/agent/notification.pp
@@ -23,11 +23,9 @@
# for more details.
# Defaults to hiera('step')
#
-
class tripleo::profile::base::ceilometer::agent::notification (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceilometer
if $step >= 4 {
diff --git a/manifests/profile/base/ceilometer/api.pp b/manifests/profile/base/ceilometer/api.pp
index e324c00..da94da2 100644
--- a/manifests/profile/base/ceilometer/api.pp
+++ b/manifests/profile/base/ceilometer/api.pp
@@ -23,15 +23,13 @@
# for more details.
# Defaults to hiera('step')
#
-
class tripleo::profile::base::ceilometer::api (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceilometer
if $step >= 4 {
include ::ceilometer::api
+ include ::ceilometer::wsgi::apache
}
-
}
diff --git a/manifests/profile/base/ceilometer/collector.pp b/manifests/profile/base/ceilometer/collector.pp
index 34ee90b..baaf4c8 100644
--- a/manifests/profile/base/ceilometer/collector.pp
+++ b/manifests/profile/base/ceilometer/collector.pp
@@ -18,31 +18,63 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
-
class tripleo::profile::base::ceilometer::collector (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ $ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
+ # MongoDB
+ if $ceilometer_backend == 'mongodb' {
+ # NOTE(gfidente): 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(hiera('mongodb::server::ipv6', false)) {
+ $mongo_node_ips_with_port_prefixed = prefix(hiera('mongodb_node_ips'), '[')
+ $mongo_node_ips_with_port = suffix($mongo_node_ips_with_port_prefixed, ']:27017')
+ $mongo_node_ips_with_port_nobr = suffix(hiera('mongodb_node_ips'), ':27017')
+ } else {
+ $mongo_node_ips_with_port = suffix(hiera('mongodb_node_ips'), ':27017')
+ $mongo_node_ips_with_port_nobr = suffix(hiera('mongodb_node_ips'), ':27017')
+ }
+ $mongo_node_string = join($mongo_node_ips_with_port, ',')
+
+ $mongodb_replset = hiera('mongodb::server::replset')
+ $ceilometer_mongodb_conn_string = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
+ }
include ::tripleo::profile::base::ceilometer
+ if $step >= 2 and $sync_db and $ceilometer_backend == 'mysql' {
+ include ::ceilometer::db::mysql
+ }
+
if $step >= 3 and $sync_db {
- $ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
- if $ceilometer_backend == 'mysql' {
- include ::ceilometer::db::mysql
- }
+ include ::ceilometer::db::sync
}
- if $step >= 4 {
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ if $ceilometer_backend == 'mongodb' {
+ class { '::ceilometer::db' :
+ database_connection => $ceilometer_mongodb_conn_string,
+ }
+ } else {
+ include ::ceilometer::db
+ }
include ::ceilometer::collector
include ::ceilometer::dispatcher::gnocchi
}
diff --git a/manifests/profile/base/ceilometer/expirer.pp b/manifests/profile/base/ceilometer/expirer.pp
index 43d8c26..eaaaefc 100644
--- a/manifests/profile/base/ceilometer/expirer.pp
+++ b/manifests/profile/base/ceilometer/expirer.pp
@@ -23,16 +23,15 @@
# for more details.
# Defaults to hiera('step')
#
-
class tripleo::profile::base::ceilometer::expirer (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceilometer
if $step >= 4 {
include ::ceilometer::expirer
- Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
+ Cron <| title == 'ceilometer-expirer' |>
+ { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
}
}
diff --git a/manifests/profile/base/ceph.pp b/manifests/profile/base/ceph.pp
index 94166ac..6ffd4ef 100644
--- a/manifests/profile/base/ceph.pp
+++ b/manifests/profile/base/ceph.pp
@@ -18,22 +18,13 @@
#
# === Parameters
#
-# [*ceph_ipv6*]
-# (Optional) Force daemons to bind on IPv6 addresses
-# Defaults to false
-#
# [*ceph_mon_initial_members*]
# (Optional) List of IP addresses to use as mon_initial_members
-# Defaults to undef
+# Defaults to hiera('ceph_mon_node_names')
#
# [*ceph_mon_host*]
# (Optional) List of IP addresses to use as mon_host
-# Deftauls to undef
-#
-# [*ceph_mon_host_v6*]
-# (Optional) List of IPv6 addresses, surrounded by brackets, used as
-# mon_host when ceph_ipv6 is true
-# Defaults to undef
+# Deftauls to hiera('ceph_mon_node_ips')
#
# [*enable_ceph_storage*]
# (Optional) enable_ceph_storage
@@ -45,22 +36,29 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::ceph (
- $ceph_ipv6 = false,
- $ceph_mon_initial_members = undef,
- $ceph_mon_host = undef,
- $ceph_mon_host_v6 = undef,
+ $ceph_mon_initial_members = hiera('ceph_mon_node_names', undef),
+ $ceph_mon_host = hiera('ceph_mon_node_ips', '127.0.0.1'),
$enable_ceph_storage = false,
$step = hiera('step'),
) {
if $step >= 2 {
if $ceph_mon_initial_members {
- $mon_initial_members = downcase($ceph_mon_initial_members)
+ if is_array($ceph_mon_initial_members) {
+ $mon_initial_members = downcase(join($ceph_mon_initial_members, ','))
+ } else {
+ $mon_initial_members = downcase($ceph_mon_initial_members)
+ }
} else {
$mon_initial_members = undef
}
- if $ceph_ipv6 {
- $mon_host = $ceph_mon_host_v6
+
+ if is_array($ceph_mon_host) {
+ if is_ipv6_address($ceph_mon_host[0]) {
+ $mon_host = join(enclose_ipv6($ceph_mon_host), ',')
+ } else {
+ $mon_host = join($ceph_mon_host, ',')
+ }
} else {
$mon_host = $ceph_mon_host
}
diff --git a/manifests/profile/base/ceph/client.pp b/manifests/profile/base/ceph/client.pp
index 851324a..53f09c2 100644
--- a/manifests/profile/base/ceph/client.pp
+++ b/manifests/profile/base/ceph/client.pp
@@ -26,7 +26,6 @@
class tripleo::profile::base::ceph::client (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceph
if $step >= 2 {
diff --git a/manifests/profile/base/ceph/mon.pp b/manifests/profile/base/ceph/mon.pp
index 48c3721..c0768b6 100644
--- a/manifests/profile/base/ceph/mon.pp
+++ b/manifests/profile/base/ceph/mon.pp
@@ -19,8 +19,14 @@
# === Parameters
#
# [*ceph_pools*]
-# (Optional) List of pools to create
-# Defaults to []
+# (Optional) Hash of pools to create
+# Example with hiera:
+# tripleo::profile::base::ceph::mon::ceph_pools:
+# mypool:
+# size: 5
+# pg_num: 128
+# pgp_num: 128
+# Defaults to {}
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -28,10 +34,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::ceph::mon (
- $ceph_pools = [],
+ $ceph_pools = {},
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceph
if $step >= 2 {
@@ -39,10 +44,6 @@ class tripleo::profile::base::ceph::mon (
}
if $step >= 4 {
- ceph::pool { $ceph_pools :
- pg_num => hiera('ceph::profile::params::osd_pool_default_pg_num'),
- pgp_num => hiera('ceph::profile::params::osd_pool_default_pgp_num'),
- size => hiera('ceph::profile::params::osd_pool_default_size'),
- }
+ create_resources('ceph::pool', $ceph_pools)
}
}
diff --git a/manifests/profile/base/ceph/osd.pp b/manifests/profile/base/ceph/osd.pp
index a9224d3..6940bca 100644
--- a/manifests/profile/base/ceph/osd.pp
+++ b/manifests/profile/base/ceph/osd.pp
@@ -31,10 +31,9 @@ class tripleo::profile::base::ceph::osd (
$ceph_osd_selinux_permissive = false,
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::ceph
- if $step >= 2 {
+ if $step >= 3 {
if $ceph_osd_selinux_permissive {
exec { 'set selinux to permissive on boot':
command => "sed -ie 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config",
diff --git a/manifests/profile/base/cinder.pp b/manifests/profile/base/cinder.pp
index 27dc277..43d95b4 100644
--- a/manifests/profile/base/cinder.pp
+++ b/manifests/profile/base/cinder.pp
@@ -18,27 +18,30 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*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 (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$cinder_enable_db_purge = true,
- $pacemaker_master = true,
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
- if $step >= 4 or ($step >= 3 and $pacemaker_master) {
+ if $step >= 4 or ($step >= 3 and $sync_db) {
include ::cinder
include ::cinder::config
}
diff --git a/manifests/profile/base/cinder/api.pp b/manifests/profile/base/cinder/api.pp
index a2da25f..370b402 100644
--- a/manifests/profile/base/cinder/api.pp
+++ b/manifests/profile/base/cinder/api.pp
@@ -18,9 +18,9 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -28,14 +28,17 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::cinder::api (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
- class { '::tripleo::profile::base::cinder':
- pacemaker_master => $sync_db,
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
}
+ include ::tripleo::profile::base::cinder
+
if $step >= 3 and $sync_db {
include ::cinder::db::mysql
}
diff --git a/manifests/profile/base/cinder/backup.pp b/manifests/profile/base/cinder/backup.pp
new file mode 100644
index 0000000..df015f7
--- /dev/null
+++ b/manifests/profile/base/cinder/backup.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::backup
+#
+# Cinder Backup 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::backup (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::cinder
+
+ if $step >= 4 {
+ include ::cinder::backup
+ }
+
+}
diff --git a/manifests/profile/base/cinder/backup/ceph.pp b/manifests/profile/base/cinder/backup/ceph.pp
new file mode 100644
index 0000000..67a666e
--- /dev/null
+++ b/manifests/profile/base/cinder/backup/ceph.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::backup::ceph
+#
+# Cinder Backup Ceph 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::backup::ceph (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::cinder::backup
+
+ if $step >= 4 {
+ include ::cinder::backup::ceph
+ }
+
+}
diff --git a/manifests/profile/base/cinder/backup/swift.pp b/manifests/profile/base/cinder/backup/swift.pp
new file mode 100644
index 0000000..12561bf
--- /dev/null
+++ b/manifests/profile/base/cinder/backup/swift.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::backup::swift
+#
+# Cinder Backup Ceph 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::backup::swift (
+ $step = hiera('step'),
+) {
+
+ include ::tripleo::profile::base::cinder::backup
+
+ if $step >= 4 {
+ include ::cinder::backup::swift
+ }
+
+}
diff --git a/manifests/profile/base/cinder/scheduler.pp b/manifests/profile/base/cinder/scheduler.pp
index 68f2813..4586929 100644
--- a/manifests/profile/base/cinder/scheduler.pp
+++ b/manifests/profile/base/cinder/scheduler.pp
@@ -26,7 +26,6 @@
class tripleo::profile::base::cinder::scheduler (
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::cinder
if $step >= 4 {
diff --git a/manifests/profile/base/cinder/volume.pp b/manifests/profile/base/cinder/volume.pp
index 96cd06a..7d562ec 100644
--- a/manifests/profile/base/cinder/volume.pp
+++ b/manifests/profile/base/cinder/volume.pp
@@ -61,7 +61,6 @@ class tripleo::profile::base::cinder::volume (
$cinder_user_enabled_backends = hiera('cinder_user_enabled_backends', undef),
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::cinder
if $step >= 4 {
@@ -109,7 +108,13 @@ class tripleo::profile::base::cinder::volume (
$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])
+ $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
index 6f7922d..534bcb7 100644
--- a/manifests/profile/base/cinder/volume/dellsc.pp
+++ b/manifests/profile/base/cinder/volume/dellsc.pp
@@ -31,7 +31,6 @@ 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 {
diff --git a/manifests/profile/base/cinder/volume/eqlx.pp b/manifests/profile/base/cinder/volume/eqlx.pp
index a18270d..2399459 100644
--- a/manifests/profile/base/cinder/volume/eqlx.pp
+++ b/manifests/profile/base/cinder/volume/eqlx.pp
@@ -31,7 +31,6 @@ 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 {
diff --git a/manifests/profile/base/cinder/volume/iscsi.pp b/manifests/profile/base/cinder/volume/iscsi.pp
index d857caa..8baaf1c 100644
--- a/manifests/profile/base/cinder/volume/iscsi.pp
+++ b/manifests/profile/base/cinder/volume/iscsi.pp
@@ -21,6 +21,10 @@
# [*cinder_iscsi_address*]
# The address where to bind the iscsi targets daemon
#
+# [*backend_name*]
+# (Optional) Name given to the Cinder backend stanza
+# Defaults to 'tripleo_iscsi'
+#
# [*cinder_iscsi_helper*]
# (Optional) The iscsi helper to use
# Defaults to 'tgtadm'
@@ -29,10 +33,6 @@
# (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.
@@ -40,12 +40,11 @@
#
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'),
+ $backend_name = hiera('cinder::backend::iscsi::volume_backend_name', 'tripleo_iscsi'),
+ $cinder_iscsi_helper = 'tgtadm',
+ $cinder_lvm_loop_device_size = '10280',
+ $step = hiera('step'),
) {
-
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
@@ -53,8 +52,11 @@ class tripleo::profile::base::cinder::volume::iscsi (
size => join([$cinder_lvm_loop_device_size, 'M']),
}
+ # NOTE(gfidente): never emit in hieradata:
+ # key: [ipv6]
+ # as it will cause hiera parsing errors
cinder::backend::iscsi { $backend_name :
- iscsi_ip_address => $cinder_iscsi_address,
+ iscsi_ip_address => normalize_ip_for_uri($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
index bae541f..fc652c9 100644
--- a/manifests/profile/base/cinder/volume/netapp.pp
+++ b/manifests/profile/base/cinder/volume/netapp.pp
@@ -31,7 +31,6 @@ 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 {
diff --git a/manifests/profile/base/cinder/volume/nfs.pp b/manifests/profile/base/cinder/volume/nfs.pp
index a26c50e..7b1f1b9 100644
--- a/manifests/profile/base/cinder/volume/nfs.pp
+++ b/manifests/profile/base/cinder/volume/nfs.pp
@@ -18,10 +18,6 @@
#
# === 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
#
@@ -29,18 +25,21 @@
# (Optional) Name given to the Cinder backend stanza
# Defaults to 'tripleo_nfs'
#
+# [*cinder_nfs_mount_options*]
+# (Optional) List of mount options for the NFS share
+# Defaults to ''
+#
# [*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'),
+ $cinder_nfs_mount_options = '',
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::cinder::volume
if $step >= 4 {
diff --git a/manifests/profile/base/cinder/volume/rbd.pp b/manifests/profile/base/cinder/volume/rbd.pp
index 6c8341a..1246de8 100644
--- a/manifests/profile/base/cinder/volume/rbd.pp
+++ b/manifests/profile/base/cinder/volume/rbd.pp
@@ -18,6 +18,10 @@
#
# === Parameters
#
+# [*backend_name*]
+# (Optional) Name given to the Cinder backend stanza
+# Defaults to 'tripleo_ceph'
+#
# [*cinder_rbd_backend_host*]
# (Optional) String to use as backend_host in the backend stanza
# Defaults to 'cinder::host'
@@ -34,24 +38,19 @@
# (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 (
+ $backend_name = hiera('cinder::backend::rbd::volume_backend_name', 'tripleo_ceph'),
$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 {
diff --git a/manifests/profile/base/database/mongodb.pp b/manifests/profile/base/database/mongodb.pp
index 4c53c9c..1a19bb6 100644
--- a/manifests/profile/base/database/mongodb.pp
+++ b/manifests/profile/base/database/mongodb.pp
@@ -32,10 +32,9 @@
#
class tripleo::profile::base::database::mongodb (
$mongodb_replset,
- $bootstrap_node = downcase(hiera('bootstrap_nodeid')),
- $step = hiera('step'),
+ $bootstrap_node = downcase(hiera('bootstrap_nodeid')),
+ $step = hiera('step'),
) {
-
if $step >= 2 {
include ::mongodb::globals
diff --git a/manifests/profile/base/database/mongodbcommon.pp b/manifests/profile/base/database/mongodbcommon.pp
index 6530730..c61e692 100644
--- a/manifests/profile/base/database/mongodbcommon.pp
+++ b/manifests/profile/base/database/mongodbcommon.pp
@@ -18,22 +18,20 @@
#
# === 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
#
+# [*mongodb_node_ips*]
+# List of The mongodb node ip addresses
+#
class tripleo::profile::base::database::mongodbcommon (
- $mongodb_node_ips = hiera('mongo_node_ips'),
$mongodb_ipv6_enabled = false,
+ $mongodb_node_ips = hiera('mongodb_node_ips'),
) {
-
$port = '27017'
- # NOTE(gfidente): the following vars are needed on all nodes so they
- # need to stay out of pacemaker_master conditional.
+ # NOTE(gfidente): the following vars are needed on all nodes.
# 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'
diff --git a/manifests/profile/base/database/mysql.pp b/manifests/profile/base/database/mysql.pp
new file mode 100644
index 0000000..49c9df3
--- /dev/null
+++ b/manifests/profile/base/database/mysql.pp
@@ -0,0 +1,86 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::database::mysql
+#
+# MySQL profile for tripleo
+#
+# === Parameters
+#
+# [*manage_resources*]
+# (Optional) Whether or not manage root user, root my.cnf, and service.
+# Defaults to true
+#
+# [*mysql_server_options*]
+# (Optional) Extras options to deploy MySQL. Useful when deploying Galera cluster.
+# Should be an hash.
+# Defaults to {}
+#
+# [*remove_default_accounts*]
+# (Optional) Whether or not remove default MySQL accounts.
+# 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::database::mysql (
+ $manage_resources = true,
+ $mysql_server_options = {},
+ $remove_default_accounts = true,
+ $step = hiera('step'),
+
+) {
+
+ validate_hash($mysql_server_options)
+
+ # non-ha scenario
+ if $manage_resources {
+ $mysql_step = 2
+ } else {
+ # ha scenario
+ $mysql_step = 1
+ }
+ if $step >= $mysql_step {
+ if str2bool(hiera('enable_galera', true)) {
+ $mysql_config_file = '/etc/my.cnf.d/galera.cnf'
+ } else {
+ $mysql_config_file = '/etc/my.cnf.d/server.cnf'
+ }
+ # TODO Galara
+ # FIXME: due to https://bugzilla.redhat.com/show_bug.cgi?id=1298671 we
+ # set bind-address to a hostname instead of an ip address; to move Mysql
+ # from internal_api on another network we'll have to customize both
+ # MysqlNetwork and ControllerHostnameResolveNetwork in ServiceNetMap
+ $mysql_server_default = {
+ 'mysqld' => {
+ 'bind-address' => $::hostname,
+ 'max_connections' => hiera('mysql_max_connections'),
+ 'open_files_limit' => '-1',
+ }
+ }
+ $mysql_server_options_real = deep_merge($mysql_server_default, $mysql_server_options)
+ class { '::mysql::server':
+ config_file => $mysql_config_file,
+ override_options => $mysql_server_options_real,
+ create_root_user => $manage_resources,
+ create_root_my_cnf => $manage_resources,
+ service_manage => $manage_resources,
+ service_enabled => $manage_resources,
+ remove_default_accounts => $remove_default_accounts,
+ }
+ }
+
+}
diff --git a/manifests/profile/base/database/redis.pp b/manifests/profile/base/database/redis.pp
index 3a5200c..14f6af4 100644
--- a/manifests/profile/base/database/redis.pp
+++ b/manifests/profile/base/database/redis.pp
@@ -18,26 +18,24 @@
#
# === 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')
#
+# [*redis_node_ips*]
+# (Optional) List of Redis node ips
+# Defaults to hiera('redis_node_ips')
+#
# [*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'),
+ $redis_node_ips = hiera('redis_node_ips'),
$step = hiera('step'),
) {
-
if $step >= 2 {
if $bootstrap_nodeid == $::hostname {
$slaveof = undef
diff --git a/manifests/profile/base/glance/api.pp b/manifests/profile/base/glance/api.pp
index fd43732..845fd41 100644
--- a/manifests/profile/base/glance/api.pp
+++ b/manifests/profile/base/glance/api.pp
@@ -18,18 +18,18 @@
#
# === Parameters
#
+# [*glance_backend*]
+# (Optional) Glance backend(s) to use.
+# Defaults to downcase(hiera('glance_backend', 'swift'))
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*glance_backend*]
-# (Optional) Glance backend(s) to use.
-# Defaults to downcase(hiera('glance_backend', 'swift'))
-#
class tripleo::profile::base::glance::api (
- $step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
+ $step = hiera('step'),
) {
if $step >= 4 {
diff --git a/manifests/profile/base/glance/registry.pp b/manifests/profile/base/glance/registry.pp
index 774f646..ac6796a 100644
--- a/manifests/profile/base/glance/registry.pp
+++ b/manifests/profile/base/glance/registry.pp
@@ -18,24 +18,29 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*glance_backend*]
+# (Optional) Glance backend(s) to use.
+# Defaults to downcase(hiera('glance_backend', 'swift'))
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*glance_backend*]
-# (Optional) Glance backend(s) to use.
-# Defaults to downcase(hiera('glance_backend', 'swift'))
-#
class tripleo::profile::base::glance::registry (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::glance::db::mysql
diff --git a/manifests/profile/base/gnocchi.pp b/manifests/profile/base/gnocchi.pp
new file mode 100644
index 0000000..6a470ca
--- /dev/null
+++ b/manifests/profile/base/gnocchi.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::gnocchi
+#
+# Gnocchi 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::gnocchi (
+ $step = hiera('step'),
+) {
+ if $step >= 3 {
+ include ::gnocchi
+ include ::gnocchi::config
+ include ::gnocchi::client
+ }
+}
diff --git a/manifests/profile/base/gnocchi/api.pp b/manifests/profile/base/gnocchi/api.pp
new file mode 100644
index 0000000..5e7e215
--- /dev/null
+++ b/manifests/profile/base/gnocchi/api.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::base::gnocchi::api
+#
+# Gnocchi profile for tripleo api
+#
+# === Parameters
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*gnocchi_backend*]
+# (Optional) Gnocchi backend string file, swift or rbd
+# Defaults to swift
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::gnocchi::api (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift')),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ include ::tripleo::profile::base::gnocchi
+
+ if $step >= 3 and $sync_db {
+ include ::gnocchi::db::mysql
+ include ::gnocchi::db::sync
+ }
+
+ if $step >= 4 {
+ include ::gnocchi::api
+ include ::gnocchi::wsgi::apache
+ include ::gnocchi::storage
+ case $gnocchi_backend {
+ 'swift': { include ::gnocchi::storage::swift }
+ 'file': { include ::gnocchi::storage::file }
+ 'rbd': { include ::gnocchi::storage::ceph }
+ default: { fail('Unrecognized gnocchi_backend parameter.') }
+ }
+ }
+}
diff --git a/manifests/profile/base/gnocchi/metricd.pp b/manifests/profile/base/gnocchi/metricd.pp
new file mode 100644
index 0000000..4d7eb89
--- /dev/null
+++ b/manifests/profile/base/gnocchi/metricd.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::gnocchi::metricd
+#
+# Gnocchi metricd profile
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::gnocchi::metricd (
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::base::gnocchi
+
+ if $step >= 4 {
+ include ::gnocchi::metricd
+ }
+}
diff --git a/manifests/profile/base/gnocchi/statsd.pp b/manifests/profile/base/gnocchi/statsd.pp
new file mode 100644
index 0000000..775b043
--- /dev/null
+++ b/manifests/profile/base/gnocchi/statsd.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::gnocchi::statsd
+#
+# Gnocchi statsd profile
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::gnocchi::statsd (
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::base::gnocchi
+
+ if $step >= 4 {
+ include ::gnocchi::statsd
+ }
+}
diff --git a/manifests/profile/base/haproxy.pp b/manifests/profile/base/haproxy.pp
index 31a5415..68ff3e4 100644
--- a/manifests/profile/base/haproxy.pp
+++ b/manifests/profile/base/haproxy.pp
@@ -18,23 +18,84 @@
#
# === Parameters
#
-# [*step*]
-# (Optional) The current step in deployment. See tripleo-heat-templates
-# for more details.
-# Defaults to hiera('step')
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# tripleo::profile::base::haproxy::certificates_specs:
+# undercloud-haproxy-public-cert:
+# service_pem: <haproxy ready pem file>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# hostname: <undercloud fqdn>
+# postsave_cmd: <command to update certificate on resubmit>
+# principal: "haproxy/<undercloud fqdn>"
+# Defaults to {}.
+#
+# [*certmonger_ca*]
+# (Optional) The CA that certmonger will use to generate the certificates.
+# Defaults to hiera('certmonger_ca', 'local').
#
# [*enable_load_balancer*]
# (Optional) Whether or not loadbalancer is enabled.
# Defaults to hiera('enable_load_balancer', true).
#
+# [*generate_service_certificates*]
+# (Optional) Whether or not certmonger will generate certificates for
+# HAProxy. This could be as many as specified by the $certificates_specs
+# variable.
+# Note that this doesn't configure the certificates in haproxy, it merely
+# creates the certificates.
+# Defaults to hiera('generate_service_certificate', false).
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
class tripleo::profile::base::haproxy (
- $enable_load_balancer = hiera('enable_load_balancer', true),
- $step = hiera('step'),
+ $certificates_specs = {},
+ $certmonger_ca = hiera('certmonger_ca', 'local'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $step = hiera('step'),
) {
-
if $step >= 1 {
if $enable_load_balancer {
+ if str2bool($generate_service_certificates) {
+ include ::certmonger
+ # This is only needed for certmonger's local CA. For any other CA this
+ # operation (trusting the CA) should be done by the deployer.
+ if $certmonger_ca == 'local' {
+ class { '::tripleo::certmonger::ca::local':
+ notify => Class['::tripleo::haproxy']
+ }
+ }
+
+ Certmonger_certificate {
+ ca => $certmonger_ca,
+ ensure => 'present',
+ wait => true,
+ require => Class['::certmonger'],
+ }
+ create_resources('::tripleo::certmonger::haproxy', $certificates_specs)
+ }
+
include ::tripleo::haproxy
+
+ unless hiera('tripleo::haproxy::haproxy_service_manage', true) {
+ # Reload HAProxy configuration if the haproxy class has refreshed or any
+ # HAProxy frontend endpoint has changed.
+ exec { 'haproxy-reload':
+ command => 'systemctl reload haproxy',
+ path => ['/usr/bin', '/usr/sbin'],
+ refreshonly => true,
+ onlyif => 'pcs property | grep -q "maintenance-mode.*true"',
+ subscribe => Class['::haproxy']
+ }
+ Haproxy::Listen<||> ~> Exec['haproxy-reload']
+ Haproxy::Balancermember<||> ~> Exec['haproxy-reload']
+ }
}
}
diff --git a/manifests/profile/base/heat.pp b/manifests/profile/base/heat.pp
index 0fc30d8..cafe95e 100644
--- a/manifests/profile/base/heat.pp
+++ b/manifests/profile/base/heat.pp
@@ -18,42 +18,52 @@
#
# === 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
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
# 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)
#
+# [*notification_driver*]
+# (Optional) Heat notification driver to use.
+# Defaults to 'messaging'
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
class tripleo::profile::base::heat (
- $step = hiera('step'),
+ $bootstrap_node = downcase(hiera('bootstrap_nodeid')),
+ $manage_db_purge = hiera('heat_enable_db_purge', true),
$notification_driver = 'messaging',
- $bootstrap_master = downcase(hiera('bootstrap_nodeid')),
- $manage_db_purge = hiera('heat_enable_db_purge', true),
+ $step = hiera('step'),
) {
+ # Domain resources will be created at step5 on the bootstrap_node so we
+ # configure heat.conf at step3 and 4 but actually create the domain later.
+ if $step == 3 or $step == 4 {
+ class { '::heat::keystone::domain':
+ manage_domain => false,
+ manage_user => false,
+ manage_role => false,
+ }
+ }
if $step >= 4 {
class { '::heat' :
notification_driver => $notification_driver,
}
include ::heat::config
+ include ::heat::cors
}
if $step >= 5 {
if $manage_db_purge {
include ::heat::cron::purge_deleted
}
- if $bootstrap_master == $::hostname {
+ if $bootstrap_node == $::hostname {
# Class ::heat::keystone::domain has to run on bootstrap node
# because it creates DB entities via API calls.
include ::heat::keystone::domain
diff --git a/manifests/profile/base/heat/api.pp b/manifests/profile/base/heat/api.pp
index 67a0bfc..68de12b 100644
--- a/manifests/profile/base/heat/api.pp
+++ b/manifests/profile/base/heat/api.pp
@@ -24,9 +24,8 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::heat::api (
- $step = hiera('step'),
+ $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
index 2813826..7c80fc6 100644
--- a/manifests/profile/base/heat/api_cfn.pp
+++ b/manifests/profile/base/heat/api_cfn.pp
@@ -24,9 +24,8 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::heat::api_cfn (
- $step = hiera('step'),
+ $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
index b2adf92..6362275 100644
--- a/manifests/profile/base/heat/api_cloudwatch.pp
+++ b/manifests/profile/base/heat/api_cloudwatch.pp
@@ -24,9 +24,8 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::heat::api_cloudwatch (
- $step = hiera('step'),
+ $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
index b48837c..32a711f 100644
--- a/manifests/profile/base/heat/engine.pp
+++ b/manifests/profile/base/heat/engine.pp
@@ -18,9 +18,9 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to undef
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -28,9 +28,14 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::heat::engine (
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::heat::db::mysql
diff --git a/manifests/profile/base/horizon.pp b/manifests/profile/base/horizon.pp
new file mode 100644
index 0000000..be07c0e
--- /dev/null
+++ b/manifests/profile/base/horizon.pp
@@ -0,0 +1,50 @@
+# 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::horizon
+#
+# Horizon 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::horizon (
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ # Horizon
+ include ::apache::mod::remoteip
+ include ::apache::mod::status
+ if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
+ $_profile_support = 'cisco'
+ } else {
+ $_profile_support = 'None'
+ }
+ $neutron_options = {'profile_support' => $_profile_support }
+ $memcached_ipv6 = hiera('memcached_ipv6', false)
+ if $memcached_ipv6 {
+ $horizon_memcached_servers = hiera('memcached_node_ips_v6', '[::1]')
+ } else {
+ $horizon_memcached_servers = hiera('memcached_node_ips', '127.0.0.1')
+ }
+ class { '::horizon':
+ cache_server_ip => $horizon_memcached_servers,
+ neutron_options => $neutron_options,
+ }
+ }
+}
diff --git a/manifests/profile/base/ironic.pp b/manifests/profile/base/ironic.pp
index 139654b..da89839 100644
--- a/manifests/profile/base/ironic.pp
+++ b/manifests/profile/base/ironic.pp
@@ -18,26 +18,34 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
class tripleo::profile::base::ironic (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ # Database is accessed by both API and conductor, hence it's here.
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
- if $step >= 3 {
- include ::ironic
+ if $step >= 3 and $sync_db {
+ include ::ironic::db::mysql
+ }
- # Database is accessed by both API and conductor, hence it's here.
- if $sync_db {
- include ::ironic::db::mysql
- include ::ironic::db::sync
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ class { '::ironic':
+ sync_db => $sync_db,
}
+
+ include ::ironic::cors
}
}
diff --git a/manifests/profile/base/ironic/api.pp b/manifests/profile/base/ironic/api.pp
index 1406e2d..020cacb 100644
--- a/manifests/profile/base/ironic/api.pp
+++ b/manifests/profile/base/ironic/api.pp
@@ -23,10 +23,10 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::ironic::api (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
-
include ::tripleo::profile::base::ironic
+
if $step >= 4 {
include ::ironic::api
}
diff --git a/manifests/profile/base/ironic/conductor.pp b/manifests/profile/base/ironic/conductor.pp
index 7a587a5..2cb61fb 100644
--- a/manifests/profile/base/ironic/conductor.pp
+++ b/manifests/profile/base/ironic/conductor.pp
@@ -23,9 +23,8 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::ironic::conductor (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
-
include ::tripleo::profile::base::ironic
if $step >= 4 {
diff --git a/manifests/profile/base/keepalived.pp b/manifests/profile/base/keepalived.pp
index af7c095..f2063d6 100644
--- a/manifests/profile/base/keepalived.pp
+++ b/manifests/profile/base/keepalived.pp
@@ -18,25 +18,23 @@
#
# === Parameters
#
+# [*enable_load_balancer*]
+# (Optional) Whether or not loadbalancer is enabled.
+# 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')
#
-# [*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/kernel.pp b/manifests/profile/base/kernel.pp
new file mode 100644
index 0000000..df13a98
--- /dev/null
+++ b/manifests/profile/base/kernel.pp
@@ -0,0 +1,30 @@
+# Copyright 2016 Red Hat, Inc.
+# All Rights Reserved.
+#
+# 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::kernel
+#
+# Load and configure Kernel modules.
+#
+class tripleo::profile::base::kernel {
+
+ if hiera('kernel_modules', undef) {
+ create_resources(kmod::load, hiera('kernel_modules'), { })
+ }
+ if hiera('sysctl_settings', undef) {
+ create_resources(sysctl::value, hiera('sysctl_settings'), { })
+ }
+ Exec <| tag == 'kmod::load' |> -> Sysctl <| |>
+
+}
diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp
index 706b78f..354d24c 100644
--- a/manifests/profile/base/keystone.pp
+++ b/manifests/profile/base/keystone.pp
@@ -18,17 +18,9 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
-# [*manage_roles*]
-# (Optional) whether to create keystone admin role
-# Defaults to true
-#
-# [*manage_endpoint*]
-# (Optional) Whether to create keystone endpoints
-# Defaults to true
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*manage_db_purge*]
# (Optional) Whether keystone token flushing should be enabled
@@ -40,12 +32,19 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::keystone (
- $sync_db = true,
- $manage_roles = true,
- $manage_endpoint = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$manage_db_purge = hiera('keystone_enable_db_purge', true),
$step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ $manage_roles = true
+ $manage_endpoint = true
+ } else {
+ $sync_db = false
+ $manage_roles = false
+ $manage_endpoint = false
+ }
if $step >= 3 and $sync_db {
include ::keystone::db::mysql
@@ -59,6 +58,7 @@ class tripleo::profile::base::keystone (
include ::keystone::config
include ::keystone::wsgi::apache
+ include ::keystone::cors
if $manage_roles {
include ::keystone::roles::admin
@@ -68,38 +68,58 @@ class tripleo::profile::base::keystone (
include ::keystone::endpoint
}
- #TODO: need a cleanup-keystone-tokens.sh solution here
- file { [ '/etc/keystone/ssl', '/etc/keystone/ssl/certs', '/etc/keystone/ssl/private' ]:
- ensure => 'directory',
- owner => 'keystone',
- group => 'keystone',
- require => Package['keystone'],
- }
- file { '/etc/keystone/ssl/certs/signing_cert.pem':
- content => hiera('keystone_signing_certificate'),
- owner => 'keystone',
- group => 'keystone',
- notify => Service[$::apache::params::service_name],
- require => File['/etc/keystone/ssl/certs'],
- }
- file { '/etc/keystone/ssl/private/signing_key.pem':
- content => hiera('keystone_signing_key'),
- owner => 'keystone',
- group => 'keystone',
- notify => Service[$::apache::params::service_name],
- require => File['/etc/keystone/ssl/private'],
- }
- file { '/etc/keystone/ssl/certs/ca.pem':
- content => hiera('keystone_ca_certificate'),
- owner => 'keystone',
- group => 'keystone',
- notify => Service[$::apache::params::service_name],
- require => File['/etc/keystone/ssl/certs'],
- }
}
if $step >= 5 and $manage_db_purge {
include ::keystone::cron::token_flush
}
+
+ if $step >= 5 and $manage_endpoint{
+ if hiera('aodh_api_enabled', false) {
+ include ::aodh::keystone::auth
+ }
+ if hiera('ceilometer_api_enabled', false) {
+ include ::ceilometer::keystone::auth
+ }
+ if hiera('cinder_api_enabled', false) {
+ include ::cinder::keystone::auth
+ }
+ if hiera('glance_api_enabled', false) {
+ include ::glance::keystone::auth
+ }
+ if hiera('gnocchi_api_enabled', false) {
+ include ::gnocchi::keystone::auth
+ }
+ if hiera('heat_api_enabled', false) {
+ include ::heat::keystone::auth
+ }
+ if hiera('heat_api_cfn_enabled', false) {
+ include ::heat::keystone::auth_cfn
+ }
+ if hiera('ironic_api_enabled', false) {
+ include ::ironic::keystone::auth
+ }
+ if hiera('manila_api_enabled', false) {
+ include ::manila::keystone::auth
+ }
+ if hiera('mistral_api_enabled', false) {
+ include ::mistral::keystone::auth
+ }
+ if hiera('neutron_api_enabled', false) {
+ include ::neutron::keystone::auth
+ }
+ if hiera('nova_api_enabled', false) {
+ include ::nova::keystone::auth
+ }
+ if hiera('sahara_api_enabled', false) {
+ include ::sahara::keystone::auth
+ }
+ if hiera('swift_proxy_enabled', false) {
+ include ::swift::keystone::auth
+ }
+ if hiera('trove_api_enabled', false) {
+ include ::trove::keystone::auth
+ }
+ }
}
diff --git a/manifests/profile/base/manila/api.pp b/manifests/profile/base/manila/api.pp
index c1188ec..9a3a314 100644
--- a/manifests/profile/base/manila/api.pp
+++ b/manifests/profile/base/manila/api.pp
@@ -24,9 +24,8 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::manila::api (
- $step = hiera('step'),
+ $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
index b6d7593..8581187 100644
--- a/manifests/profile/base/manila/scheduler.pp
+++ b/manifests/profile/base/manila/scheduler.pp
@@ -18,19 +18,24 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optiona) Whether to run db sync.
-# Defaults to true.
-#
class tripleo::profile::base::manila::scheduler (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $sync_db = true,
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if $step >= 3 and $sync_db {
include ::manila::db::mysql
diff --git a/manifests/profile/base/manila/share.pp b/manifests/profile/base/manila/share.pp
index 932e013..ed64b29 100644
--- a/manifests/profile/base/manila/share.pp
+++ b/manifests/profile/base/manila/share.pp
@@ -24,12 +24,10 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::manila::share (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
-
if $step >= 4 {
include ::manila::share
}
-
}
diff --git a/manifests/profile/base/memcached.pp b/manifests/profile/base/memcached.pp
index 54d12c8..72a91e2 100644
--- a/manifests/profile/base/memcached.pp
+++ b/manifests/profile/base/memcached.pp
@@ -23,11 +23,9 @@
# for more details.
# Defaults to hiera('step')
#
-#
class tripleo::profile::base::memcached (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
-
if $step >= 1 {
include ::memcached
}
diff --git a/manifests/profile/base/mistral.pp b/manifests/profile/base/mistral.pp
new file mode 100644
index 0000000..cffb03e
--- /dev/null
+++ b/manifests/profile/base/mistral.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::mistral
+#
+# Mistral 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::base::mistral (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $step >= 3 and $sync_db {
+ include ::mistral::db::mysql
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::mistral
+ include ::mistral::config
+ include ::mistral::client
+ include ::mistral::db::sync
+ include ::mistral::cors
+ }
+}
diff --git a/manifests/profile/base/mistral/api.pp b/manifests/profile/base/mistral/api.pp
new file mode 100644
index 0000000..50708f1
--- /dev/null
+++ b/manifests/profile/base/mistral/api.pp
@@ -0,0 +1,46 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::mistral::api
+#
+# Mistral API profile for tripleo
+#
+# === Parameters
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::mistral::api (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::mistral::api
+ }
+}
+
diff --git a/manifests/profile/base/mistral/engine.pp b/manifests/profile/base/mistral/engine.pp
new file mode 100644
index 0000000..b2d8864
--- /dev/null
+++ b/manifests/profile/base/mistral/engine.pp
@@ -0,0 +1,46 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::mistral::engine
+#
+# Mistral Engine profile for tripleo
+#
+# === Parameters
+#
+# [*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::mistral::engine (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::mistral::engine
+ }
+
+}
diff --git a/manifests/profile/base/mistral/executor.pp b/manifests/profile/base/mistral/executor.pp
new file mode 100644
index 0000000..8e3f2c9
--- /dev/null
+++ b/manifests/profile/base/mistral/executor.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::mistral::executor
+#
+# Mistral Executor 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::base::mistral::executor (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ include ::tripleo::profile::base::mistral
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::mistral::executor
+ }
+}
diff --git a/manifests/profile/base/monitoring/fluentd.pp b/manifests/profile/base/monitoring/fluentd.pp
new file mode 100644
index 0000000..8160452
--- /dev/null
+++ b/manifests/profile/base/monitoring/fluentd.pp
@@ -0,0 +1,39 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::monitoring::fluentd
+#
+# FluentD configuration for TripleO
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) String. The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::monitoring::fluentd (
+ $step = hiera('step', undef)
+) {
+ if $step == undef or $step >= 3 {
+ include ::fluentd
+
+ ::fluentd::plugin { 'rubygem-fluent-plugin-add':
+ plugin_provider => 'yum',
+ }
+
+ ::fluentd::plugin { 'rubygem-fluent-plugin-elasticsearch':
+ plugin_provider => 'yum',
+ }
+ }
+}
diff --git a/manifests/profile/base/monitoring/rabbitmq.pp b/manifests/profile/base/monitoring/rabbitmq.pp
new file mode 100644
index 0000000..cfd5016
--- /dev/null
+++ b/manifests/profile/base/monitoring/rabbitmq.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::sensu::rabbitmq
+#
+# RabbitMQ configuration for Sensu stack for TripleO
+#
+# === Parameters
+#
+# [*password*]
+# (Optional) String. Password to connect to RabbitMQ server
+# Defaults to hiera('rabbit_password', undef)
+#
+# [*user*]
+# (Optional) String. Username to connect to RabbitMQ server
+# Defaults to hiera('rabbit_username', 'sensu')
+#
+# [*vhost*]
+# (Optional) String. RabbitMQ vhost to be used by Sensu
+# Defaults to '/sensu'
+#
+class tripleo::profile::base::monitoring::rabbitmq (
+ $password = hiera('monitoring_rabbitmq_password', undef),
+ $user = hiera('monitoring_rabbitmq_username', 'sensu'),
+ $vhost = hiera('monitoring_rabbitmq_vhost', '/sensu'),
+) {
+ rabbitmq_vhost { 'sensu-rabbit-vhost':
+ ensure => present,
+ name => $vhost
+ }
+
+ rabbitmq_user { 'sensu-rabbit-user':
+ name => $user,
+ password => $password,
+ tags => ['monitoring']
+ }
+
+ rabbitmq_user_permissions { "${user}@${vhost}":
+ configure_permission => '.*',
+ read_permission => '.*',
+ write_permission => '.*',
+ }
+}
diff --git a/manifests/profile/base/monitoring/sensu.pp b/manifests/profile/base/monitoring/sensu.pp
new file mode 100644
index 0000000..a6872b3
--- /dev/null
+++ b/manifests/profile/base/monitoring/sensu.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::monitoring::sensu
+#
+# Sensu configuration for TripleO
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) String. The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::monitoring::sensu (
+ $step = hiera('step', undef),
+) {
+ if $step == undef or $step >= 3 {
+ include ::sensu
+ package { 'osops-tools-monitoring-oschecks':
+ ensure => 'present'
+ }
+ }
+}
diff --git a/manifests/profile/base/monitoring/uchiwa.pp b/manifests/profile/base/monitoring/uchiwa.pp
new file mode 100644
index 0000000..2674b5f
--- /dev/null
+++ b/manifests/profile/base/monitoring/uchiwa.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::monitoring::uchiwa
+#
+# Monitoring dashboards for TripleO
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) String. The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::monitoring::uchiwa (
+ $step = hiera('step', undef),
+) {
+ if $step == undef or $step >= 3 {
+ include ::uchiwa
+ }
+}
diff --git a/manifests/profile/base/neutron.pp b/manifests/profile/base/neutron.pp
index d5efa81..7b07b1f 100644
--- a/manifests/profile/base/neutron.pp
+++ b/manifests/profile/base/neutron.pp
@@ -18,19 +18,14 @@
#
# === 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 (
- $sync_db = true,
- $step = hiera('step'),
+ $step = hiera('step'),
) {
- if hiera('step') >= 4 or ( hiera('step') >= 3 and $sync_db ) {
+ if $step >= 3 {
include ::neutron
include ::neutron::config
}
diff --git a/manifests/profile/base/neutron/agents/midonet.pp b/manifests/profile/base/neutron/agents/midonet.pp
new file mode 100644
index 0000000..f2ce94a
--- /dev/null
+++ b/manifests/profile/base/neutron/agents/midonet.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::neutron::agents::midonet
+#
+# Midonet Neutron agent profile
+#
+# === Parameters
+#
+# [*midonet_libvirt_qemu_data*]
+# (Optional) qemu.conf data for midonet.
+# Defaults to hiera('midonet_libvirt_qemu_data')
+#
+# [*neutron_api_node_ips*]
+# (Optional) The IPs of the Neutron API hosts
+# Defaults to hiera('neutron_api_node_ips')
+#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::agents::midonet (
+ $midonet_libvirt_qemu_data = hiera('midonet_libvirt_qemu_data', ''),
+ $neutron_api_node_ips = hiera('neutron_api_node_ips', ''),
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ # TODO(devvesa) provide non-controller ips for these services
+ class { '::tripleo::network::midonet::agent':
+ zookeeper_servers => $neutron_api_node_ips,
+ cassandra_seeds => $neutron_api_node_ips
+ }
+
+ if defined(Service['libvirt']) {
+ file { '/etc/libvirt/qemu.conf':
+ ensure => present,
+ content => hiera('midonet_libvirt_qemu_data')
+ }
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/agents/nuage.pp b/manifests/profile/base/neutron/agents/nuage.pp
new file mode 100644
index 0000000..80beceb
--- /dev/null
+++ b/manifests/profile/base/neutron/agents/nuage.pp
@@ -0,0 +1,58 @@
+# 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::neutron::agents::nuage
+#
+# Nuage Neutron agent profile
+#
+# === Parameters
+#
+# [*nova_auth_ip*]
+# (Optional) Nova auth IP
+# Defaults to hiera('keystone_public_api_virtual_ip')
+#
+# [*nova_metadata_ip*]
+# (Optional) Nova metadata node IPs
+# Defaults to hiera('nova_metadata_node_ips')
+#
+# [*nova_os_password*]
+# (Optional) Nova password
+# Defaults to hiera('nova_password')
+#
+# [*nova_os_tenant_name*]
+# (Optional) Nova tenant name
+# Defaults to hiera('nova_os_tenant_name')
+#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::agents::nuage (
+ $nova_auth_ip = hiera('keystone_public_api_virtual_ip', ''),
+ $nova_metadata_ip = hiera('nova_metadata_node_ips', ''),
+ $nova_os_password = hiera('nova_password', ''),
+ $nova_os_tenant_name = hiera('nova::api::admin_tenant_name', ''),
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ include ::nuage::vrs
+
+ class { '::nuage::metadataagent':
+ nova_os_tenant_name => $nova_os_tenant_name,
+ nova_os_password => $nova_os_password,
+ nova_metadata_ip => $nova_metadata_ip,
+ nova_auth_ip => $nova_auth_ip,
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/agents/ovn.pp b/manifests/profile/base/neutron/agents/ovn.pp
new file mode 100644
index 0000000..443b164
--- /dev/null
+++ b/manifests/profile/base/neutron/agents/ovn.pp
@@ -0,0 +1,38 @@
+# 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::neutron::agents::ovn
+#
+# OVN Neutron agent profile for tripleo
+#
+# [*ovn_db_host*]
+# The IP-Address/Hostname where OVN DBs are deployed
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::agents::ovn (
+ $ovn_db_host,
+ $step = hiera('step')
+) {
+ if $step >= 4 {
+ $ovn_sbdb_port = hiera('ovn::southbound::port')
+ class { '::ovn::controller':
+ ovn_remote => "tcp:${ovn_db_host}:${ovn_sbdb_port}",
+ ovn_encap_type => hiera('ovn::southboud::encap_type')
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/dhcp.pp b/manifests/profile/base/neutron/dhcp.pp
index 180fd37..24b1a35 100644
--- a/manifests/profile/base/neutron/dhcp.pp
+++ b/manifests/profile/base/neutron/dhcp.pp
@@ -18,31 +18,18 @@
#
# === Parameters
#
-# [*neutron_dnsmasq_options*]
-# (Optional)
-# Defaults to hiera('neutron_dnsmasq_options')
-#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::dhcp (
- $neutron_dnsmasq_options = hiera('neutron_dnsmasq_options', ''),
- $step = hiera('step'),
+ $step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
include ::neutron::agents::dhcp
- file { '/etc/neutron/dnsmasq-neutron.conf':
- content => $neutron_dnsmasq_options,
- owner => 'neutron',
- group => 'neutron',
- notify => Service['neutron-dhcp-service'],
- require => Package['neutron'],
- }
-
Service<| title == 'neutron-server' |> -> Service <| title == 'neutron-dhcp' |>
}
}
diff --git a/manifests/profile/base/neutron/l3.pp b/manifests/profile/base/neutron/l3.pp
index 2b57555..14ffa82 100644
--- a/manifests/profile/base/neutron/l3.pp
+++ b/manifests/profile/base/neutron/l3.pp
@@ -18,17 +18,13 @@
#
# === Parameters
#
-# [*neutron_ovs_use_veth*]
-# (Optional) Whether to set ovs_use_veth (for older kernel support)
-# Defaults to hiera('neutron_ovs_use_veth', false)
-#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::l3 (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/metadata.pp b/manifests/profile/base/neutron/metadata.pp
index d7b4c99..4cc6748 100644
--- a/manifests/profile/base/neutron/metadata.pp
+++ b/manifests/profile/base/neutron/metadata.pp
@@ -24,7 +24,7 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::metadata (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
if $step >= 4 {
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/midonet.pp b/manifests/profile/base/neutron/midonet.pp
index 972856f..3ba9dd9 100644
--- a/manifests/profile/base/neutron/midonet.pp
+++ b/manifests/profile/base/neutron/midonet.pp
@@ -18,75 +18,67 @@
#
# === Parameters
#
-# [*vip*]
-# (Optional) Public Virtual IP Address for this cloud
-# Defaults to hiera('public_virtual_ip')
+# [*admin_password*]
+# (Optional) Admin Password for Midonet API
+# Defaults to hiera('admin_password')
+#
+# [*bind_address*]
+# (Optional) The address to bind Cassandra and Midonet API to
+# Defaults to hiera('neutron::bind_host')
#
# [*keystone_admin_token*]
# (Optional) The Keystone Admin Token
# Defaults to hiera('keystone::admin_token')
#
-# [*zookeeper_client_ip*]
-# (Optional) The IP of the Zookeeper Client
-# Defaults to hiera('neutron::bind_host')
-#
-# [*zookeeper_hostnames*]
-# (Optional) The IPs of the Zookeeper Servers
-# Defaults to hiera('controller_node_names')
-#
# [*neutron_api_node_ips*]
# (Optional) The IPs of the Neutron API hosts
# Defaults to hiera('neutron_api_node_ips')
#
-# [*bind_address*]
-# (Optional) The address to bind Cassandra and Midonet API to
-# Defaults to hiera('neutron::bind_host')
-#
-# [*admin_password*]
-# (Optional) Admin Password for Midonet API
-# Defaults to hiera('admin_password')
-#
-# [*zk_on_controller*]
-# (Optional) Whether to put zookeeper on the controllers
-# Defaults to hiera('enable_zookeeper_on_controller')
-#
-# [*neutron_auth_tenant*]
-# (Optional) Tenant to use for Neutron authentication
-# Defaults to hiera('neutron::server::auth_tenant')
-#
# [*neutron_auth_password*]
# (Optional) Password to use for Neutron authentication
-# Defaults to hiera('neutron::server::auth_password')
+# Defaults to hiera('neutron::server::password')
#
-# [*step*]
-# (Optional) The current step in deployment. See tripleo-heat-templates
-# for more details.
-# Defaults to hiera('step')
+# [*neutron_auth_tenant*]
+# (Optional) Tenant to use for Neutron authentication
+# Defaults to hiera('neutron::server::project_name')
#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
+# [*vip*]
+# (Optional) Public Virtual IP Address for this cloud
+# Defaults to hiera('public_virtual_ip')
+#
+# [*zk_on_controller*]
+# (Optional) Whether to put zookeeper on the controllers
+# Defaults to hiera('enable_zookeeper_on_controller')
+#
+# [*zookeeper_client_ip*]
+# (Optional) The IP of the Zookeeper Client
+# Defaults to hiera('neutron::bind_host')
+#
+# [*zookeeper_hostnames*]
+# (Optional) The IPs of the Zookeeper Servers
+# Defaults to hiera('controller_node_names')
+#
class tripleo::profile::base::neutron::midonet (
- $vip = hiera('public_virtual_ip'),
+ $admin_password = hiera('admin_password', ''),
+ $bind_address = hiera('neutron::bind_host', ''),
$keystone_admin_token = hiera('keystone::admin_token', ''),
- $zookeeper_client_ip = hiera('neutron::bind_host', ''),
- $zookeeper_hostnames = hiera('controller_node_names', ''),
$neutron_api_node_ips = hiera('neutron_api_node_ips', ''),
- $bind_address = hiera('neutron::bind_host', ''),
- $admin_password = hiera('admin_password', ''),
- $zk_on_controller = hiera('enable_zookeeper_on_controller', ''),
- $neutron_auth_tenant = hiera('neutron::server::auth_tenant', ''),
- $neutron_auth_password = hiera('neutron::server::auth_password', ''),
+ $neutron_auth_password = hiera('neutron::keystone::authtoken::password', ''),
+ $neutron_auth_tenant = hiera('neutron::keystone::authtoken::project_name', ''),
$step = hiera('step'),
+ $vip = hiera('public_virtual_ip'),
+ $zk_on_controller = hiera('enable_zookeeper_on_controller', ''),
+ $zookeeper_client_ip = hiera('neutron::bind_host', ''),
+ $zookeeper_hostnames = hiera('controller_node_names', ''),
) {
-
include ::tripleo::profile::base::neutron
+ include ::tripleo::profile::base::neutron::agents::midonet
if $step >= 4 {
- class { '::neutron':
- service_plugins => []
- }
# Run zookeeper in the controller if configured
if zk_on_controller {
@@ -106,11 +98,6 @@ class tripleo::profile::base::neutron::midonet (
}
}
- class {'::tripleo::network::midonet::agent':
- zookeeper_servers => $neutron_api_node_ips,
- cassandra_seeds => $neutron_api_node_ips
- }
-
class {'::tripleo::network::midonet::api':
zookeeper_servers => $neutron_api_node_ips,
vip => $vip,
diff --git a/manifests/profile/base/neutron/opendaylight.pp b/manifests/profile/base/neutron/opendaylight.pp
new file mode 100644
index 0000000..ffe28ce
--- /dev/null
+++ b/manifests/profile/base/neutron/opendaylight.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::neutron::opendaylight
+#
+# OpenDaylight Neutron profile for TripleO
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
+# [*primary_controller*]
+# (Optional) The hostname of the first controller
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
+class tripleo::profile::base::neutron::opendaylight (
+ $step = hiera('step'),
+ $primary_controller = hiera('bootstrap_nodeid', undef),
+) {
+
+ include ::tripleo::profile::base::neutron
+
+ if ! str2bool(hiera('opendaylight::enable_l3')) {
+ include ::tripleo::profile::base::neutron::l3
+ }
+
+ if $step >= 1 {
+ # Configure ODL only on first controller
+ if hiera('odl_on_controller') and $primary_controller == downcase($::hostname) {
+ include ::opendaylight
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/ovs.pp b/manifests/profile/base/neutron/ovs.pp
index f801511..a4e0cd3 100644
--- a/manifests/profile/base/neutron/ovs.pp
+++ b/manifests/profile/base/neutron/ovs.pp
@@ -26,7 +26,6 @@
class tripleo::profile::base::neutron::ovs(
$step = hiera('step'),
) {
-
include ::tripleo::profile::base::neutron
if $step >= 4 {
diff --git a/manifests/profile/base/neutron/plugins/ml2.pp b/manifests/profile/base/neutron/plugins/ml2.pp
index 04c6244..4f4de0b 100644
--- a/manifests/profile/base/neutron/plugins/ml2.pp
+++ b/manifests/profile/base/neutron/plugins/ml2.pp
@@ -18,24 +18,29 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*mechanism_drivers*]
# (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.
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::plugins::ml2 (
- $mechanism_drivers = hiera('neutron::plugins::ml2::mechanism_drivers'),
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $mechanism_drivers = hiera('neutron::plugins::ml2::mechanism_drivers'),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
@@ -57,7 +62,14 @@ class tripleo::profile::base::neutron::plugins::ml2 (
if 'bsn_ml2' in $mechanism_drivers {
include ::neutron::plugins::ml2::bigswitch::restproxy
- include ::neutron::agents::bigswitch
+ }
+
+ if 'opendaylight' in $mechanism_drivers {
+ include ::tripleo::profile::base::neutron::plugins::ml2::opendaylight
+ }
+
+ if 'ovn' in $mechanism_drivers {
+ include ::tripleo::profile::base::neutron::plugins::ml2::ovn
}
}
}
diff --git a/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp b/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp
new file mode 100644
index 0000000..f25aea6
--- /dev/null
+++ b/manifests/profile/base/neutron/plugins/ml2/opendaylight.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::neutron::plugins::ml2::opendaylight
+#
+# OpenDaylight ML2 Neutron profile for TripleO
+#
+# === Parameters
+#
+# [*odl_port*]
+# (Optional) Port to use for OpenDaylight
+# Defaults to hiera('opendaylight::odl_rest_port')
+#
+# [*conn_proto*]
+# (Optional) Protocol to use to for ODL REST access
+# Defaults to hiera('opendaylight::nb_connection_protocol')
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::plugins::ml2::opendaylight (
+ $odl_port = hiera('opendaylight::odl_rest_port'),
+ $conn_proto = hiera('opendaylight::nb_connection_protocol'),
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ # Figure out ODL IP
+ if hiera('odl_on_controller') {
+ $odl_url_ip = hiera('opendaylight_api_vip')
+ } else {
+ $odl_url_ip = hiera('opendaylight::odl_bind_ip')
+ }
+
+ if ! $odl_url_ip { fail('OpenDaylight Controller IP/VIP is Empty') }
+
+ class { '::neutron::plugins::ml2::opendaylight':
+ odl_url => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron";
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/plugins/ml2/ovn.pp b/manifests/profile/base/neutron/plugins/ml2/ovn.pp
new file mode 100644
index 0000000..46477a7
--- /dev/null
+++ b/manifests/profile/base/neutron/plugins/ml2/ovn.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::neutron::plugins::ml2::ovn
+#
+# OVN Neutron ML2 profile for tripleo
+#
+# [*ovn_db_host*]
+# The IP-Address/Hostname where OVN DBs are deployed
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::plugins::ml2::ovn (
+ $ovn_db_host,
+ $step = hiera('step')
+) {
+ if $step >= 4 {
+ if $::hostname == $ovn_db_host {
+ # NOTE: we might split northd from plugin later, in the case of
+ # micro-services, where neutron-server & northd are not in the same
+ # containers
+ include ::ovn::northd
+ }
+ $ovn_nb_port = hiera('ovn::northbound::port')
+ $ovn_sb_port = hiera('ovn::southbound::port')
+ class { '::neutron::plugins::ml2::ovn':
+ ovn_nb_connection => "tcp:${ovn_db_host}:${ovn_nb_port}",
+ ovn_sb_connection => "tcp:${ovn_db_host}:${ovn_sb_port}",
+ }
+ }
+}
+
diff --git a/manifests/profile/base/neutron/plugins/nuage.pp b/manifests/profile/base/neutron/plugins/nuage.pp
index 5d3661e..0843ec4 100644
--- a/manifests/profile/base/neutron/plugins/nuage.pp
+++ b/manifests/profile/base/neutron/plugins/nuage.pp
@@ -16,19 +16,24 @@
#
# Nuage Neutron profile for tripleo
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
class tripleo::profile::base::neutron::plugins::nuage (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/plugins/opencontrail.pp b/manifests/profile/base/neutron/plugins/opencontrail.pp
index 96d7421..fbf46e7 100644
--- a/manifests/profile/base/neutron/plugins/opencontrail.pp
+++ b/manifests/profile/base/neutron/plugins/opencontrail.pp
@@ -16,19 +16,24 @@
#
# Opencontrail Neutron profile for tripleo
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
class tripleo::profile::base::neutron::plugins::opencontrail (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp b/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp
new file mode 100644
index 0000000..7548046
--- /dev/null
+++ b/manifests/profile/base/neutron/plugins/ovs/opendaylight.pp
@@ -0,0 +1,73 @@
+# 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::neutron::plugins::ovs::opendaylight
+#
+# OpenDaylight Neutron OVS profile for TripleO
+#
+# === Parameters
+#
+# [*odl_port*]
+# (Optional) Port to use for OpenDaylight
+# Defaults to hiera('opendaylight::odl_rest_port')
+#
+# [*odl_check_url*]
+# (Optional) URL path used to check if ODL is up
+# Defaults to hiera('opendaylight_check_url')
+#
+# [*odl_api_ips*]
+# (Optional) List of OpenStack Controller IPs for ODL API
+# Defaults to hiera('opendaylight_api_node_ips')
+#
+# [*conn_proto*]
+# (Optional) Protocol to use to for ODL REST access
+# Defaults to hiera('opendaylight::nb_connection_protocol')
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::neutron::plugins::ovs::opendaylight (
+ $odl_port = hiera('opendaylight::odl_rest_port'),
+ $odl_check_url = hiera('opendaylight_check_url'),
+ $odl_api_ips = hiera('opendaylight_api_node_ips'),
+ $conn_proto = hiera('opendaylight::nb_connection_protocol'),
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ # Figure out ODL IP (and VIP if on controller)
+ if hiera('odl_on_controller') {
+ $opendaylight_controller_ip = $odl_api_ips[0]
+ $odl_url_ip = hiera('opendaylight_api_vip')
+ } else {
+ $opendaylight_controller_ip = hiera('opendaylight::odl_bind_ip')
+ $odl_url_ip = $opendaylight_controller_ip
+ }
+
+ if ! $opendaylight_controller_ip { fail('OpenDaylight Controller IP is Empty') }
+
+ if ! $odl_url_ip { fail('OpenDaylight API VIP is Empty') }
+
+ # Build URL to check if ODL is up before connecting OVS
+ $opendaylight_url = "${conn_proto}://${odl_url_ip}:${odl_port}/${odl_check_url}"
+
+ class { '::neutron::plugins::ovs::opendaylight':
+ tunnel_ip => hiera('neutron::agents::ml2::ovs::local_ip'),
+ odl_check_url => $opendaylight_url,
+ odl_ovsdb_iface => "tcp:${opendaylight_controller_ip}:6640",
+ }
+ }
+}
diff --git a/manifests/profile/base/neutron/plugins/plumgrid.pp b/manifests/profile/base/neutron/plugins/plumgrid.pp
index f5cd273..bc73d29 100644
--- a/manifests/profile/base/neutron/plugins/plumgrid.pp
+++ b/manifests/profile/base/neutron/plugins/plumgrid.pp
@@ -18,19 +18,24 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run Neutron DB sync operations
-# Defaults to undef
-#
class tripleo::profile::base::neutron::plugins::plumgrid (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
diff --git a/manifests/profile/base/neutron/server.pp b/manifests/profile/base/neutron/server.pp
index 8b5539e..5a1b377 100644
--- a/manifests/profile/base/neutron/server.pp
+++ b/manifests/profile/base/neutron/server.pp
@@ -18,24 +18,46 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::neutron::server (
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::neutron
- if $step >= 3 {
+ if $step >= 3 and $sync_db {
include ::neutron::db::mysql
}
- if $step >= 4 {
+ # We start neutron-server on the bootstrap node first, because
+ # it will try to populate tables and we need to make sure this happens
+ # before it starts on other nodes
+ if $step >= 4 and $sync_db {
include ::neutron::server::notifications
- include ::neutron::server
+ # We need to override the hiera value neutron::server::sync_db which is set
+ # to true
+ class { '::neutron::server':
+ sync_db => $sync_db,
+ }
+ }
+ if $step >= 5 and !$sync_db {
+ include ::neutron::server::notifications
+ class { '::neutron::server':
+ sync_db => $sync_db,
+ }
}
-
}
diff --git a/manifests/profile/base/neutron/sriov.pp b/manifests/profile/base/neutron/sriov.pp
new file mode 100644
index 0000000..00ecc21
--- /dev/null
+++ b/manifests/profile/base/neutron/sriov.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::neutron::sriov
+#
+# Neutron SR-IOV nic Agent profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*mechanism_drivers*]
+# (Optional) The mechanism drivers to use with the Ml2 plugin
+# Defaults to hiera('neutron::plugins::ml2::mechanism_drivers')
+#
+
+class tripleo::profile::base::neutron::sriov(
+ $step = hiera('step'),
+ $mechanism_drivers = hiera('neutron::plugins::ml2::mechanism_drivers'),
+) {
+
+ if $step >= 4 {
+ if 'sriovnicswitch' in $mechanism_drivers {
+ include ::neutron::agents::ml2::sriov
+ include ::tripleo::host::sriov
+ }
+ }
+
+}
diff --git a/manifests/profile/base/nova.pp b/manifests/profile/base/nova.pp
index 52a4c73..b43b8e8 100644
--- a/manifests/profile/base/nova.pp
+++ b/manifests/profile/base/nova.pp
@@ -18,43 +18,53 @@
#
# === Parameters
#
-# [*step*]
-# (Optional) The current step of the deployment
-# Defaults to hiera('step')
-#
-# [*manage_migration*]
-# (Optional) Whether or not manage Nova Live migration
-# Defaults to false
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*libvirt_enabled*]
# (Optional) Whether or not Libvirt is enabled.
# Defaults to false
#
+# [*manage_migration*]
+# (Optional) Whether or not manage Nova Live migration
+# Defaults to false
+#
# [*nova_compute_enabled*]
# (Optional) Whether or not nova-compute is enabled.
# Defaults to false
#
+# [*step*]
+# (Optional) The current step of the deployment
+# Defaults to hiera('step')
+#
class tripleo::profile::base::nova (
- $step = hiera('step'),
- $manage_migration = false,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
$libvirt_enabled = false,
+ $manage_migration = false,
$nova_compute_enabled = false,
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
if hiera('nova::use_ipv6', false) {
- $memcached_servers = suffix(hiera('memcache_node_ips_v6'), ':11211')
+ $memcache_servers = suffix(hiera('memcached_node_ips_v6'), ':11211')
} else {
- $memcached_servers = suffix(hiera('memcache_node_ips'), ':11211')
+ $memcache_servers = suffix(hiera('memcached_node_ips'), ':11211')
}
- if $step >= 3 {
+
+ if hiera('step') >= 4 or (hiera('step') >= 3 and $sync_db) {
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
+ class { '::nova::cache':
+ enabled => true,
+ backend => 'oslo_cache.memcache_pool',
+ memcache_servers => $memcache_servers,
+ }
}
if $step >= 4 {
diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp
index 3b36c57..285e0b7 100644
--- a/manifests/profile/base/nova/api.pp
+++ b/manifests/profile/base/nova/api.pp
@@ -16,21 +16,24 @@
#
# Nova API profile for tripleo
#
-# === Parameters
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
-#
class tripleo::profile::base::nova::api (
- $step = hiera('step'),
- $sync_db = true,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
include ::tripleo::profile::base::nova
@@ -46,5 +49,11 @@ class tripleo::profile::base::nova::api (
}
include ::nova::network::neutron
}
+
+ if $step >= 5 {
+ if hiera('nova_enable_db_purge', true) {
+ include ::nova::cron::archive_deleted_rows
+ }
+ }
}
diff --git a/manifests/profile/base/nova/compute.pp b/manifests/profile/base/nova/compute.pp
index 16b61df..076996a 100644
--- a/manifests/profile/base/nova/compute.pp
+++ b/manifests/profile/base/nova/compute.pp
@@ -38,9 +38,23 @@ class tripleo::profile::base::nova::compute (
# deploy basic bits for nova-compute
include ::nova::compute
+ # If Service['nova-conductor'] is in catalog, make sure we start it
+ # before nova-compute.
+ Service<| title == 'nova-conductor' |> -> Service['nova-compute']
# deploy bits to connect nova compute to neutron
include ::nova::network::neutron
+
+ # When utilising images for deployment, we need to reset the iSCSI initiator name to make it unique
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1244328
+ exec { 'reset-iscsi-initiator-name':
+ command => '/bin/echo InitiatorName=$(/usr/sbin/iscsi-iname) > /etc/iscsi/initiatorname.iscsi',
+ onlyif => '/usr/bin/test ! -f /etc/iscsi/.initiator_reset',
+ before => File['/etc/iscsi/.initiator_reset'],
+ }
+ file { '/etc/iscsi/.initiator_reset':
+ ensure => present,
+ }
}
# If NFS is used as a Cinder backend
diff --git a/manifests/profile/base/nova/compute/ironic.pp b/manifests/profile/base/nova/compute/ironic.pp
new file mode 100644
index 0000000..c0213fb
--- /dev/null
+++ b/manifests/profile/base/nova/compute/ironic.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::nova::compute::ironic
+#
+# Nova Compute Ironic 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::ironic (
+ $step = hiera('step'),
+) {
+ if $step >= 4 {
+ include ::tripleo::profile::base::nova::compute
+ include ::nova::compute::ironic
+ include ::nova::network::neutron
+ }
+}
diff --git a/manifests/profile/base/nova/compute/libvirt.pp b/manifests/profile/base/nova/compute/libvirt.pp
index 5b6f895..956f8ad 100644
--- a/manifests/profile/base/nova/compute/libvirt.pp
+++ b/manifests/profile/base/nova/compute/libvirt.pp
@@ -26,7 +26,6 @@
class tripleo::profile::base::nova::compute::libvirt (
$step = hiera('step'),
) {
-
if $step >= 4 {
include ::tripleo::profile::base::nova::compute
diff --git a/manifests/profile/base/nova/conductor.pp b/manifests/profile/base/nova/conductor.pp
index 04c9d06..fa9f12b 100644
--- a/manifests/profile/base/nova/conductor.pp
+++ b/manifests/profile/base/nova/conductor.pp
@@ -26,10 +26,8 @@
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
index 442cf84..8ccfb8c 100644
--- a/manifests/profile/base/nova/consoleauth.pp
+++ b/manifests/profile/base/nova/consoleauth.pp
@@ -26,10 +26,8 @@
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/libvirt.pp b/manifests/profile/base/nova/libvirt.pp
index 29ef372..889b80d 100644
--- a/manifests/profile/base/nova/libvirt.pp
+++ b/manifests/profile/base/nova/libvirt.pp
@@ -26,7 +26,6 @@
class tripleo::profile::base::nova::libvirt (
$step = hiera('step'),
) {
-
if $step >= 4 {
include ::tripleo::profile::base::nova
include ::nova::compute::libvirt::services
diff --git a/manifests/profile/base/nova/scheduler.pp b/manifests/profile/base/nova/scheduler.pp
index 13b4e82..3c9b2c2 100644
--- a/manifests/profile/base/nova/scheduler.pp
+++ b/manifests/profile/base/nova/scheduler.pp
@@ -26,11 +26,9 @@
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
index aa0cc7b..f654fef 100644
--- a/manifests/profile/base/nova/vncproxy.pp
+++ b/manifests/profile/base/nova/vncproxy.pp
@@ -26,10 +26,8 @@
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/pacemaker.pp b/manifests/profile/base/pacemaker.pp
new file mode 100644
index 0000000..0d628b5
--- /dev/null
+++ b/manifests/profile/base/pacemaker.pp
@@ -0,0 +1,90 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::profile::base::pacemaker
+#
+# Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::pacemaker (
+ $step = hiera('step'),
+) {
+ Pcmk_resource <| |> {
+ tries => 10,
+ try_sleep => 3,
+ }
+
+ if $::hostname == downcase(hiera('bootstrap_nodeid')) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ $enable_fencing = str2bool(hiera('enable_fencing', false)) and $step >= 5
+
+ if $step >= 1 {
+ $pacemaker_cluster_members = downcase(regsubst(hiera('controller_node_names'), ',', ' ', 'G'))
+ $corosync_ipv6 = str2bool(hiera('corosync_ipv6', false))
+ if $corosync_ipv6 {
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000), '--ipv6' => '' }
+ } else {
+ $cluster_setup_extras = { '--token' => hiera('corosync_token_timeout', 1000) }
+ }
+ class { '::pacemaker':
+ hacluster_pwd => hiera('hacluster_pwd'),
+ } ->
+ class { '::pacemaker::corosync':
+ cluster_members => $pacemaker_cluster_members,
+ setup_cluster => $pacemaker_master,
+ cluster_setup_extras => $cluster_setup_extras,
+ }
+ class { '::pacemaker::stonith':
+ disable => !$enable_fencing,
+ }
+ if $enable_fencing {
+ include ::tripleo::fencing
+
+ # enable stonith after all Pacemaker resources have been created
+ Pcmk_resource<||> -> Class['tripleo::fencing']
+ Pcmk_constraint<||> -> Class['tripleo::fencing']
+ Exec <| tag == 'pacemaker_constraint' |> -> Class['tripleo::fencing']
+ # enable stonith after all fencing devices have been created
+ Class['tripleo::fencing'] -> Class['pacemaker::stonith']
+ }
+
+ # FIXME(gfidente): sets 200secs as default start timeout op
+ # param; until we can use pcmk global defaults we'll still
+ # need to add it to every resource which redefines op params
+ Pacemaker::Resource::Service {
+ op_params => 'start timeout=200s stop timeout=200s',
+ }
+
+ file { '/var/lib/tripleo/pacemaker-restarts':
+ ensure => directory,
+ } ~> Tripleo::Pacemaker::Resource_restart_flag<||>
+ }
+
+ if $step >= 2 {
+ if $pacemaker_master {
+ include ::pacemaker::resource_defaults
+ }
+ }
+
+}
diff --git a/manifests/profile/base/rabbitmq.pp b/manifests/profile/base/rabbitmq.pp
index 6e86eab..2fd2347 100644
--- a/manifests/profile/base/rabbitmq.pp
+++ b/manifests/profile/base/rabbitmq.pp
@@ -18,25 +18,25 @@
#
# === 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)).
+# [*config_variables*]
+# (Optional) RabbitMQ environment.
+# Defaults to hiera('rabbitmq_config_variables').
#
# [*environment*]
# (Optional) RabbitMQ environment.
# Defaults to hiera('rabbitmq_environment').
#
+# [*ipv6*]
+# (Optional) Whether to deploy RabbitMQ on IPv6 network.
+# Defaults to str2bool(hiera('rabbit_ipv6', false)).
+#
# [*kernel_variables*]
# (Optional) RabbitMQ environment.
# Defaults to hiera('rabbitmq_environment').
#
-# [*config_variables*]
-# (Optional) RabbitMQ environment.
-# Defaults to hiera('rabbitmq_config_variables').
+# [*nodes*]
+# (Optional) Array of host(s) for RabbitMQ nodes.
+# Defaults to hiera('rabbitmq_node_ips', []).
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -44,14 +44,13 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::rabbitmq (
- $nodes = hiera('rabbit_node_ips', []),
- $ipv6 = str2bool(hiera('rabbit_ipv6', false)),
+ $config_variables = hiera('rabbitmq_config_variables'),
$environment = hiera('rabbitmq_environment'),
+ $ipv6 = str2bool(hiera('rabbit_ipv6', false)),
$kernel_variables = hiera('rabbitmq_kernel_variables'),
- $config_variables = hiera('rabbitmq_config_variables'),
+ $nodes = hiera('rabbitmq_node_ips', []),
$step = hiera('step'),
) {
-
# IPv6 environment, necessary for RabbitMQ.
if $ipv6 {
$rabbit_env = merge($environment, {
diff --git a/manifests/profile/base/sahara.pp b/manifests/profile/base/sahara.pp
index befb5d3..96d23a6 100644
--- a/manifests/profile/base/sahara.pp
+++ b/manifests/profile/base/sahara.pp
@@ -18,14 +18,27 @@
#
# === Parameters
#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
class tripleo::profile::base::sahara (
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
- if $step >= 4 {
- include ::sahara
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db){
+ class { '::sahara':
+ sync_db => $sync_db,
+ }
}
}
diff --git a/manifests/profile/base/sahara/api.pp b/manifests/profile/base/sahara/api.pp
index e9149b1..1ead106 100644
--- a/manifests/profile/base/sahara/api.pp
+++ b/manifests/profile/base/sahara/api.pp
@@ -24,10 +24,11 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::sahara::api (
- $step = hiera('step'),
+ $step = hiera('step'),
) {
+ include ::tripleo::profile::base::sahara
+
if $step >= 4 {
- include ::tripleo::profile::base::sahara
- include ::sahara::api
+ include ::sahara::service::api
}
}
diff --git a/manifests/profile/base/sahara/engine.pp b/manifests/profile/base/sahara/engine.pp
index 28aff7b..4dbaa85 100644
--- a/manifests/profile/base/sahara/engine.pp
+++ b/manifests/profile/base/sahara/engine.pp
@@ -18,9 +18,9 @@
#
# === Parameters
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to true
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -28,15 +28,22 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::sahara::engine (
- $sync_db = true,
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ include ::tripleo::profile::base::sahara
+
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
+ include ::sahara::service::engine
}
}
diff --git a/manifests/profile/base/snmp.pp b/manifests/profile/base/snmp.pp
index 40f7393..301ac9a 100644
--- a/manifests/profile/base/snmp.pp
+++ b/manifests/profile/base/snmp.pp
@@ -18,25 +18,24 @@
#
# === Parameters
#
-# [*step*]
-# (Optional) The current step in deployment. See tripleo-heat-templates
-# for more details.
-# Defaults to hiera('step')
+# [*snmpd_password*]
+# The SNMP password
+# Defaults to hiera('snmpd_readonly_user_password')
#
# [*snmpd_user*]
# The SNMP username
# Defaults to hiera('snmpd_readonly_user_name')
#
-# [*snmpd_password*]
-# The SNMP password
-# Defaults to hiera('snmpd_readonly_user_password')
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
#
class tripleo::profile::base::snmp (
- $step = hiera('step'),
- $snmpd_user = hiera('snmpd_readonly_user_name'),
$snmpd_password = hiera('snmpd_readonly_user_password'),
+ $snmpd_user = hiera('snmpd_readonly_user_name'),
+ $step = hiera('step'),
) {
-
if $step >= 4 {
snmp::snmpv3_user { $snmpd_user:
authtype => 'MD5',
@@ -44,7 +43,16 @@ class tripleo::profile::base::snmp (
}
class { '::snmp':
agentaddress => ['udp:161','udp6:[::1]:161'],
- snmpd_config => [ join(['createUser ', $snmpd_user, ' MD5 "', $snmpd_password, '"']), join(['rouser ', $snmpd_user]), 'proc cron', 'includeAllDisks 10%', 'master agentx', 'trapsink localhost public', 'iquerySecName internalUser', 'rouser internalUser', 'defaultMonitors yes', 'linkUpDownNotifications yes' ],
+ snmpd_config => [ join(['createUser ', $snmpd_user, ' MD5 "', $snmpd_password, '"']),
+ join(['rouser ', $snmpd_user]),
+ 'proc cron',
+ 'includeAllDisks 10%',
+ 'master agentx',
+ 'trapsink localhost public',
+ 'iquerySecName internalUser',
+ 'rouser internalUser',
+ 'defaultMonitors yes',
+ 'linkUpDownNotifications yes' ],
}
}
}
diff --git a/manifests/profile/base/swift/add_devices.pp b/manifests/profile/base/swift/add_devices.pp
new file mode 100644
index 0000000..bd4c91c
--- /dev/null
+++ b/manifests/profile/base/swift/add_devices.pp
@@ -0,0 +1,58 @@
+# Copyright 2015 Red Hat, Inc.
+# All Rights Reserved.
+#
+# 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.
+# == Function: tripleo::profile::base::swift::add_devices
+#
+# Swift add_devices helper function
+#
+# === Parameters
+#
+# [*swift_zones*]
+# (Optional) The number of swift zones.
+#
+define tripleo::profile::base::swift::add_devices(
+ $swift_zones = '1'
+){
+ # NOTE(dprince): Swift zones is not yet properly wired into the Heat
+ # templates. See: https://review.openstack.org/#/c/97758/3
+ # For now our regex supports the r1z1-192.0.2.6:%PORT%/d1 syntax or the
+ # newer r1z%<controller or SwiftStorage><N>%-192.0.2.6:%PORT%/d1 syntax.
+ $server_num_or_device = regsubst($name,'^r1z%+[A-Za-z]*([0-9]+)%+-(.*)$','\1')
+ if (is_integer($server_num_or_device)) {
+ $server_num = $server_num_or_device
+ } else {
+ $server_num = '1'
+ }
+ # Function to place server in its zone. Zone is calculated by
+ # server number in heat template modulo the number of zones + 1.
+ $zone = (($server_num%$swift_zones) + 1)
+
+ # add the rings
+ $base = regsubst($name,'^r1.*-(.*)$','\1')
+ $object = regsubst($base, '%PORT%', '6000')
+ ring_object_device { $object:
+ zone => '1',
+ weight => 100,
+ }
+ $container = regsubst($base, '%PORT%', '6001')
+ ring_container_device { $container:
+ zone => '1',
+ weight => 100,
+ }
+ $account = regsubst($base, '%PORT%', '6002')
+ ring_account_device { $account:
+ zone => '1',
+ weight => 100,
+ }
+}
diff --git a/manifests/profile/base/swift/proxy.pp b/manifests/profile/base/swift/proxy.pp
index 40e61ae..a95d05f 100644
--- a/manifests/profile/base/swift/proxy.pp
+++ b/manifests/profile/base/swift/proxy.pp
@@ -23,16 +23,27 @@
# for more details.
# Defaults to hiera('step')
#
+# [*memcache_servers*]
+# (Optional) List of memcache servers
+# Defaults to hiera('memcached_node_ips')
+#
+# [*memcache_port*]
+# (Optional) memcache port
+# Defaults to 11211
#
class tripleo::profile::base::swift::proxy (
$step = hiera('step'),
+ $memcache_servers = hiera('memcached_node_ips'),
+ $memcache_port = 11211,
) {
-
if $step >= 4 {
+ $swift_memcache_servers = suffix($memcache_servers, ":${memcache_port}")
include ::swift::proxy
include ::swift::proxy::proxy_logging
include ::swift::proxy::healthcheck
- include ::swift::proxy::cache
+ class { '::swift::proxy::cache':
+ memcache_servers => $swift_memcache_servers
+ }
include ::swift::proxy::keystone
include ::swift::proxy::authtoken
include ::swift::proxy::staticweb
diff --git a/manifests/profile/base/swift/ringbuilder.pp b/manifests/profile/base/swift/ringbuilder.pp
new file mode 100644
index 0000000..e0f67cd
--- /dev/null
+++ b/manifests/profile/base/swift/ringbuilder.pp
@@ -0,0 +1,80 @@
+# Copyright 2015 Red Hat, Inc.
+# All Rights Reserved.
+#
+# 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::ringbuilder
+#
+# Swift ringbuilder profile for tripleo
+#
+# === Parameters
+#
+# [*replicas*]
+# replicas
+#
+# [*build_ring*] = true,
+# (Optional) Whether to build the ring
+# Defaults to true
+#
+# [*devices*]
+# (Optional) The swift devices
+# Defaults to ''
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+# [*swift_zones*]
+# (Optional) The swift zones
+# Defaults to 1
+#
+class tripleo::profile::base::swift::ringbuilder (
+ $replicas,
+ $build_ring = true,
+ $devices = '',
+ $step = hiera('step'),
+ $swift_zones = '1',
+) {
+ if $step >= 2 {
+ # pre-install swift here so we can build rings
+ include ::swift
+ }
+
+ if $step >= 3 {
+ validate_bool($build_ring)
+
+ if $build_ring {
+
+ $device_array = strip(split(rstrip($devices), ','))
+
+ # create local rings
+ swift::ringbuilder::create{ ['object', 'account', 'container']:
+ replicas => min(count($device_array), $replicas),
+ } ->
+
+ # add all other devices
+ tripleo::profile::base::swift::add_devices {$device_array:
+ swift_zones => $swift_zones,
+ } ->
+
+ # rebalance
+ swift::ringbuilder::rebalance{ ['object', 'account', 'container']:
+ seed => 999,
+ }
+
+ Ring_object_device<| |> ~> Exec['rebalance_object']
+ Ring_object_device<| |> ~> Exec['rebalance_account']
+ Ring_object_device<| |> ~> Exec['rebalance_container']
+ }
+ }
+}
diff --git a/manifests/profile/base/swift/storage.pp b/manifests/profile/base/swift/storage.pp
index 371cb0d..0b09ea6 100644
--- a/manifests/profile/base/swift/storage.pp
+++ b/manifests/profile/base/swift/storage.pp
@@ -18,23 +18,23 @@
#
# === Parameters
#
+# [*enable_swift_storage*]
+# (Optional) enable_swift_storage
+# Deprecated: defaults to true
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*enable_swift_storage*]
-# (Optional) enable_swift_storage
-# Deprecated: defaults to true
-#
class tripleo::profile::base::swift::storage (
- $step = hiera('step'),
# Deprecated conditional to support ControllerEnableSwiftStorage parameter
$enable_swift_storage = true,
+ $step = hiera('step'),
) {
-
if $step >= 4 {
if $enable_swift_storage {
+ include ::swift::storage::disks
include ::swift::storage::all
if(!defined(File['/srv/node'])) {
file { '/srv/node':
diff --git a/manifests/profile/base/trove/api.pp b/manifests/profile/base/trove/api.pp
new file mode 100644
index 0000000..7a78171
--- /dev/null
+++ b/manifests/profile/base/trove/api.pp
@@ -0,0 +1,50 @@
+# 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::trove::api
+#
+# Trove API profile for tripleo
+#
+# === Parameters
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::trove::api (
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $step >= 3 and $sync_db {
+ include ::trove::db::mysql
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::trove
+ include ::trove::config
+ include ::trove::api
+ }
+
+}
diff --git a/manifests/profile/base/trove/conductor.pp b/manifests/profile/base/trove/conductor.pp
new file mode 100644
index 0000000..0e95a40
--- /dev/null
+++ b/manifests/profile/base/trove/conductor.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::trove::conductor
+#
+# Trove 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::trove::conductor (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::trove
+ include ::trove::config
+ include ::trove::conductor
+ }
+
+}
diff --git a/manifests/profile/base/trove/taskmanager.pp b/manifests/profile/base/trove/taskmanager.pp
new file mode 100644
index 0000000..3972c29
--- /dev/null
+++ b/manifests/profile/base/trove/taskmanager.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::trove::taskmanager
+#
+# Trove Taskmanager 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::trove::taskmanager (
+ $step = hiera('step'),
+) {
+
+ if $step >= 4 {
+ include ::trove
+ include ::trove::config
+ include ::trove::taskmanager
+ }
+
+}
diff --git a/manifests/profile/base/ui.pp b/manifests/profile/base/ui.pp
new file mode 100644
index 0000000..22371d1
--- /dev/null
+++ b/manifests/profile/base/ui.pp
@@ -0,0 +1,24 @@
+# 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::ui
+#
+# UI profile for tripleo
+#
+class tripleo::profile::base::ui () {
+ package {'openstack-tripleo-ui': }
+
+ include ::apache
+}
+
diff --git a/manifests/profile/pacemaker/apache.pp b/manifests/profile/pacemaker/apache.pp
new file mode 100644
index 0000000..980b3a4
--- /dev/null
+++ b/manifests/profile/pacemaker/apache.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::pacemaker::apache
+#
+# Apache 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::apache (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ include ::apache::params
+ pacemaker::resource::service { $::apache::params::service_name:
+ clone_params => 'interleave=true',
+ verify_on_create => true,
+ }
+ pacemaker::constraint::base { 'openstack-core-then-httpd-constraint':
+ constraint_type => 'order',
+ first_resource => 'openstack-core-clone',
+ second_resource => "${::apache::params::service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::apache::params::service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/ceilometer.pp b/manifests/profile/pacemaker/ceilometer.pp
index 0c21807..a31128d 100644
--- a/manifests/profile/pacemaker/ceilometer.pp
+++ b/manifests/profile/pacemaker/ceilometer.pp
@@ -27,47 +27,17 @@
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to undef
-#
class tripleo::profile::pacemaker::ceilometer (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
- $sync_db = true,
) {
-
- if $::hostname == downcase($bootstrap_node) {
- $pacemaker_master = true
- } else {
- $pacemaker_master = false
- }
-
include ::tripleo::profile::base::ceilometer
- if $step >= 5 and $pacemaker_master {
- $ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
- case $ceilometer_backend {
- /mysql/: {
- pacemaker::resource::service { $::ceilometer::params::agent_central_service_name:
- clone_params => 'interleave=true',
- require => Pacemaker::Resource::Ocf['openstack-core'],
- }
- }
- default: {
- pacemaker::resource::service { $::ceilometer::params::agent_central_service_name:
- clone_params => 'interleave=true',
- require => [Pacemaker::Resource::Ocf['openstack-core'],
- Pacemaker::Resource::Service[$::mongodb::params::service_name]],
- }
- }
- }
-
- if $sync_db {
- if $ceilometer_backend == 'mysql' {
- class { '::ceilometer::db::mysql':
- require => Exec['galera-ready'],
- }
+ $ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
+ if $step >= 5 and $::hostname == downcase($bootstrap_node) {
+ if $ceilometer_backend == 'mysql' {
+ class { '::ceilometer::db::mysql':
+ require => Exec['galera-ready'],
}
}
@@ -117,22 +87,6 @@ class tripleo::profile::pacemaker::ceilometer (
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],
}
- pacemaker::constraint::base { 'ceilometer-collector-then-ceilometer-api-constraint':
- constraint_type => 'order',
- first_resource => "${::ceilometer::params::collector_service_name}-clone",
- second_resource => "${::ceilometer::params::api_service_name}-clone",
- first_action => 'start',
- second_action => 'start',
- require => [Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name],
- Pacemaker::Resource::Service[$::ceilometer::params::api_service_name]],
- }
- pacemaker::constraint::colocation { 'ceilometer-api-with-ceilometer-collector-colocation':
- source => "${::ceilometer::params::api_service_name}-clone",
- target => "${::ceilometer::params::collector_service_name}-clone",
- score => 'INFINITY',
- require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
- Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],
- }
}
}
diff --git a/manifests/profile/pacemaker/ceilometer/agent/central.pp b/manifests/profile/pacemaker/ceilometer/agent/central.pp
index e227614..90266be 100644
--- a/manifests/profile/pacemaker/ceilometer/agent/central.pp
+++ b/manifests/profile/pacemaker/ceilometer/agent/central.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::ceilometer::agent::central (
$pacemaker_master = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
include ::ceilometer::params
include ::tripleo::profile::pacemaker::ceilometer
include ::tripleo::profile::base::ceilometer::agent::central
diff --git a/manifests/profile/pacemaker/ceilometer/agent/notification.pp b/manifests/profile/pacemaker/ceilometer/agent/notification.pp
index 868bb22..e419356 100644
--- a/manifests/profile/pacemaker/ceilometer/agent/notification.pp
+++ b/manifests/profile/pacemaker/ceilometer/agent/notification.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::ceilometer::agent::notification (
$pacemaker_master = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
include ::ceilometer::params
include ::tripleo::profile::pacemaker::ceilometer
include ::tripleo::profile::base::ceilometer::agent::notification
diff --git a/manifests/profile/pacemaker/ceilometer/api.pp b/manifests/profile/pacemaker/ceilometer/api.pp
index cfe103a..169121b 100644
--- a/manifests/profile/pacemaker/ceilometer/api.pp
+++ b/manifests/profile/pacemaker/ceilometer/api.pp
@@ -31,21 +31,14 @@ class tripleo::profile::pacemaker::ceilometer::api (
$pacemaker_master = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
include ::ceilometer::params
include ::tripleo::profile::pacemaker::ceilometer
include ::tripleo::profile::base::ceilometer::api
+ include ::tripleo::profile::pacemaker::apache
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
- pacemaker::resource::service { $::ceilometer::params::api_service_name :
- clone_params => 'interleave=true',
- }
- pacemaker::constraint::colocation { 'ceilometer-delay-with-ceilometer-api-colocation':
- source => 'delay-clone',
- target => "${::ceilometer::params::api_service_name}-clone",
- score => 'INFINITY',
- require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
- Pacemaker::Resource::Ocf['delay']],
+ class { '::tripleo::profile::base::ceilometer::api':
+ step => $step,
}
}
diff --git a/manifests/profile/pacemaker/ceilometer/collector.pp b/manifests/profile/pacemaker/ceilometer/collector.pp
index 2a838f2..d0f7217 100644
--- a/manifests/profile/pacemaker/ceilometer/collector.pp
+++ b/manifests/profile/pacemaker/ceilometer/collector.pp
@@ -27,22 +27,13 @@
# for more details.
# Defaults to hiera('step')
#
-# [*sync_db*]
-# (Optional) Whether to run db sync
-# Defaults to undef
-#
class tripleo::profile::pacemaker::ceilometer::collector (
$pacemaker_master = hiera('bootstrap_nodeid'),
$step = hiera('step'),
- $sync_db = true,
) {
-
include ::ceilometer::params
include ::tripleo::profile::pacemaker::ceilometer
-
- class { '::tripleo::profile::base::ceilometer::collector':
- sync_db => (downcase($::hostname) == $pacemaker_master),
- }
+ include ::tripleo::profile::base::ceilometer::collector
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
$ceilometer_backend = downcase(hiera('ceilometer_backend', 'mongodb'))
diff --git a/manifests/profile/pacemaker/cinder/api.pp b/manifests/profile/pacemaker/cinder/api.pp
index 2c9cedf..d18942d 100644
--- a/manifests/profile/pacemaker/cinder/api.pp
+++ b/manifests/profile/pacemaker/cinder/api.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::cinder::api (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
Service <| tag == 'cinder-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -45,9 +44,7 @@ class tripleo::profile::pacemaker::cinder::api (
$pacemaker_master = false
}
- class { '::tripleo::profile::base::cinder::api':
- sync_db => $pacemaker_master,
- }
+ include ::tripleo::profile::base::cinder::api
if $step >= 5 and $pacemaker_master {
pacemaker::resource::service { $::cinder::params::api_service :
diff --git a/manifests/profile/pacemaker/cinder/backup.pp b/manifests/profile/pacemaker/cinder/backup.pp
new file mode 100644
index 0000000..72ec456
--- /dev/null
+++ b/manifests/profile/pacemaker/cinder/backup.pp
@@ -0,0 +1,60 @@
+# 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::backup
+#
+# Cinder Backup 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::backup (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+
+ Service <| tag == 'cinder::backup' |> {
+ 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::backup
+
+ if $step >= 3 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ Cinder_config<||>
+ ~>
+ tripleo::pacemaker::resource_restart_flag { "${::cinder::params::backup_service}": }
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ pacemaker::resource::service { $::cinder::params::backup_service : }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/cinder/scheduler.pp b/manifests/profile/pacemaker/cinder/scheduler.pp
index 9b79903..e25ef54 100644
--- a/manifests/profile/pacemaker/cinder/scheduler.pp
+++ b/manifests/profile/pacemaker/cinder/scheduler.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::cinder::scheduler (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
Service <| tag == 'cinder-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -67,6 +66,22 @@ class tripleo::profile::pacemaker::cinder::scheduler (
require => [Pacemaker::Resource::Service[$::cinder::params::api_service],
Pacemaker::Resource::Service[$::cinder::params::scheduler_service]],
}
+ pacemaker::constraint::base { 'cinder-scheduler-then-cinder-volume-constraint':
+ constraint_type => 'order',
+ first_resource => "${::cinder::params::scheduler_service}-clone",
+ second_resource => $::cinder::params::volume_service,
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],
+ Pacemaker::Resource::Service[$::cinder::params::volume_service]],
+ }
+ pacemaker::constraint::colocation { 'cinder-volume-with-cinder-scheduler-colocation':
+ source => $::cinder::params::volume_service,
+ target => "${::cinder::params::scheduler_service}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::cinder::params::scheduler_service],
+ Pacemaker::Resource::Service[$::cinder::params::volume_service]],
+ }
}
}
diff --git a/manifests/profile/pacemaker/cinder/volume.pp b/manifests/profile/pacemaker/cinder/volume.pp
index a4f251e..82e2522 100644
--- a/manifests/profile/pacemaker/cinder/volume.pp
+++ b/manifests/profile/pacemaker/cinder/volume.pp
@@ -31,8 +31,7 @@ class tripleo::profile::pacemaker::cinder::volume (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
- Service <| tag == 'cinder-service' |> {
+ Service <| tag == 'cinder::volume' |> {
hasrestart => true,
restart => '/bin/true',
start => '/bin/true',
@@ -47,24 +46,14 @@ class tripleo::profile::pacemaker::cinder::volume (
include ::tripleo::profile::base::cinder::volume
+ if $step >= 3 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ Cinder_api_paste_ini<||> ~> Tripleo::Pacemaker::Resource_restart_flag["${::cinder::params::volume_service}"]
+ Cinder_config<||> ~> Tripleo::Pacemaker::Resource_restart_flag["${::cinder::params::volume_service}"]
+ tripleo::pacemaker::resource_restart_flag { "${::cinder::params::volume_service}": }
+ }
+
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/core.pp b/manifests/profile/pacemaker/core.pp
new file mode 100644
index 0000000..359a817
--- /dev/null
+++ b/manifests/profile/pacemaker/core.pp
@@ -0,0 +1,58 @@
+# 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::core
+#
+# Core 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::core (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $step >= 2 and $pacemaker_master {
+ pacemaker::resource::ocf { 'openstack-core':
+ ocf_agent_name => 'heartbeat:Dummy',
+ clone_params => 'interleave=true',
+ }
+ }
+
+ if $step >= 5 and $pacemaker_master {
+ pacemaker::constraint::base { 'galera-then-openstack-core-constraint':
+ constraint_type => 'order',
+ first_resource => 'galera-master',
+ second_resource => 'openstack-core-clone',
+ first_action => 'promote',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Ocf['galera'],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/database/mongodb.pp b/manifests/profile/pacemaker/database/mongodb.pp
index 15c84d7..e4b5fcf 100644
--- a/manifests/profile/pacemaker/database/mongodb.pp
+++ b/manifests/profile/pacemaker/database/mongodb.pp
@@ -32,10 +32,9 @@
#
class tripleo::profile::pacemaker::database::mongodb (
$mongodb_replset,
- $bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
if $step >= 1 {
include ::mongodb::globals
include ::mongodb::client
diff --git a/manifests/profile/pacemaker/database/mysql.pp b/manifests/profile/pacemaker/database/mysql.pp
new file mode 100644
index 0000000..4dc3770
--- /dev/null
+++ b/manifests/profile/pacemaker/database/mysql.pp
@@ -0,0 +1,191 @@
+# 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::mysql
+#
+# MySQL with Pacemaker profile for tripleo
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::pacemaker::database::mysql (
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase(hiera('bootstrap_nodeid')) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+ $mysql_bind_host = hiera('mysql_bind_host')
+
+ # use only mysql_node_names when we land a patch in t-h-t that
+ # switches to autogenerating these values from composable services
+ $galera_node_names_lookup = hiera('mysql_node_names', hiera('galera_node_names', $::hostname))
+ if is_array($galera_node_names_lookup) {
+ $galera_nodes = downcase(join($galera_node_names_lookup, ','))
+ } else {
+ $galera_nodes = downcase($galera_node_names_lookup)
+ }
+ $galera_nodes_count = count(split($galera_nodes, ','))
+
+ $mysqld_options = {
+ 'mysqld' => {
+ 'skip-name-resolve' => '1',
+ 'binlog_format' => 'ROW',
+ 'default-storage-engine' => 'innodb',
+ 'innodb_autoinc_lock_mode' => '2',
+ 'innodb_locks_unsafe_for_binlog'=> '1',
+ 'query_cache_size' => '0',
+ 'query_cache_type' => '0',
+ 'bind-address' => $::hostname,
+ 'max_connections' => hiera('mysql_max_connections'),
+ 'open_files_limit' => '-1',
+ 'wsrep_on' => 'ON',
+ 'wsrep_provider' => '/usr/lib64/galera/libgalera_smm.so',
+ 'wsrep_cluster_name' => 'galera_cluster',
+ 'wsrep_cluster_address' => "gcomm://${galera_nodes}",
+ 'wsrep_slave_threads' => '1',
+ 'wsrep_certify_nonPK' => '1',
+ 'wsrep_max_ws_rows' => '131072',
+ 'wsrep_max_ws_size' => '1073741824',
+ 'wsrep_debug' => '0',
+ 'wsrep_convert_LOCK_to_trx' => '0',
+ 'wsrep_retry_autocommit' => '1',
+ 'wsrep_auto_increment_control' => '1',
+ 'wsrep_drupal_282555_workaround'=> '0',
+ 'wsrep_causal_reads' => '0',
+ 'wsrep_sst_method' => 'rsync',
+ 'wsrep_provider_options' => "gmcast.listen_addr=tcp://[${mysql_bind_host}]:4567;",
+ }
+ }
+
+ class { '::tripleo::profile::base::database::mysql':
+ manage_resources => false,
+ remove_default_accounts => $pacemaker_master,
+ mysql_server_options => $mysqld_options,
+ }
+
+ if $step >= 1 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ tripleo::pacemaker::resource_restart_flag { 'galera-master':
+ subscribe => File['mysql-config-file'],
+ }
+ }
+
+ if $step >= 2 {
+ if $pacemaker_master {
+ pacemaker::resource::ocf { 'galera' :
+ ocf_agent_name => 'heartbeat:galera',
+ op_params => 'promote timeout=300s on-fail=block',
+ master_params => '',
+ meta_params => "master-max=${galera_nodes_count} ordered=true",
+ resource_params => "additional_parameters='--open-files-limit=16384' enable_creation=true wsrep_cluster_address='gcomm://${galera_nodes}'",
+ require => Class['::mysql::server'],
+ before => Exec['galera-ready'],
+ }
+ exec { 'galera-ready' :
+ command => '/usr/bin/clustercheck >/dev/null',
+ timeout => 30,
+ tries => 180,
+ try_sleep => 10,
+ environment => ['AVAILABLE_WHEN_READONLY=0'],
+ require => Exec['create-root-sysconfig-clustercheck'],
+ }
+ # We add a clustercheck db user and we will switch /etc/sysconfig/clustercheck
+ # to it in a later step. We do this only on one node as it will replicate on
+ # the other members. We also make sure that the permissions are the minimum necessary
+ mysql_user { 'clustercheck@localhost':
+ ensure => 'present',
+ password_hash => mysql_password(hiera('mysql_clustercheck_password')),
+ require => Exec['galera-ready'],
+ }
+ mysql_grant { 'clustercheck@localhost/*.*':
+ ensure => 'present',
+ options => ['GRANT'],
+ privileges => ['PROCESS'],
+ table => '*.*',
+ user => 'clustercheck@localhost',
+ }
+ }
+ # This step is to create a sysconfig clustercheck file with the root user and empty password
+ # on the first install only (because later on the clustercheck db user will be used)
+ # We are using exec and not file in order to not have duplicate definition errors in puppet
+ # when we later set the the file to contain the clustercheck data
+ exec { 'create-root-sysconfig-clustercheck':
+ command => "/bin/echo 'MYSQL_USERNAME=root\nMYSQL_PASSWORD=\'\'\nMYSQL_HOST=localhost\n' > /etc/sysconfig/clustercheck",
+ unless => '/bin/test -e /etc/sysconfig/clustercheck && grep -q clustercheck /etc/sysconfig/clustercheck',
+ }
+ xinetd::service { 'galera-monitor' :
+ port => '9200',
+ server => '/usr/bin/clustercheck',
+ per_source => 'UNLIMITED',
+ log_on_success => '',
+ log_on_failure => 'HOST',
+ flags => 'REUSE',
+ service_type => 'UNLISTED',
+ user => 'root',
+ group => 'root',
+ require => Exec['create-root-sysconfig-clustercheck'],
+ }
+ }
+
+ if $step >= 4 or ( $step >= 3 and $pacemaker_master ) {
+ # At this stage we are guaranteed that the clustercheck db user exists
+ # so we switch the resource agent to use it.
+ $mysql_clustercheck_password = hiera('mysql_clustercheck_password')
+ file { '/etc/sysconfig/clustercheck' :
+ ensure => file,
+ mode => '0600',
+ owner => 'root',
+ group => 'root',
+ content => "MYSQL_USERNAME=clustercheck\n
+MYSQL_PASSWORD='${mysql_clustercheck_password}'\n
+MYSQL_HOST=localhost\n",
+ }
+ }
+
+ if $step >= 5 {
+ # We now make sure that the root db password is set to a random one
+ # At first installation /root/.my.cnf will be empty and we connect without a root
+ # password. On second runs or updates /root/.my.cnf will already be populated
+ # with proper credentials. This step happens on every node because this sql
+ # statement does not automatically replicate across nodes.
+ $mysql_root_password = hiera('mysql::server::root_password')
+ $galera_set_pwd = "/bin/touch /root/.my.cnf && \
+ /bin/echo \"UPDATE mysql.user SET Password = PASSWORD('${mysql_root_password}') WHERE user = 'root'; \
+ flush privileges;\" | \
+ /bin/mysql --defaults-extra-file=/root/.my.cnf -u root"
+ exec { 'galera-set-root-password':
+ command => $galera_set_pwd,
+ }
+ file { '/root/.my.cnf' :
+ ensure => file,
+ mode => '0600',
+ owner => 'root',
+ group => 'root',
+ content => "[client]
+ user=root
+ password=\"${mysql_root_password}\"
+
+ [mysql]
+ user=root
+ password=\"${mysql_root_password}\"",
+ require => Exec['galera-set-root-password'],
+ }
+ }
+
+}
diff --git a/manifests/profile/pacemaker/database/redis.pp b/manifests/profile/pacemaker/database/redis.pp
index 9bb96ae..e081516 100644
--- a/manifests/profile/pacemaker/database/redis.pp
+++ b/manifests/profile/pacemaker/database/redis.pp
@@ -18,9 +18,6 @@
#
# === Parameters
#
-# [*redis_vip*]
-# Redis virtual IP
-#
# [*bootstrap_node*]
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
@@ -34,9 +31,7 @@
# 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'),
@@ -49,6 +44,14 @@ class tripleo::profile::pacemaker::database::redis (
if $step >= 1 {
include ::redis
+
+ if $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ tripleo::pacemaker::resource_restart_flag { 'redis-master':
+ # ouch, but trying to stay close how notification works in
+ # puppet-redis when pacemaker is not being used
+ subscribe => Exec["cp -p ${::redis::config_file_orig} ${::redis::config_file}"]
+ }
+ }
}
if $step >= 2 and $pacemaker_master {
diff --git a/manifests/profile/pacemaker/glance.pp b/manifests/profile/pacemaker/glance.pp
index 10f4f03..664b91f 100644
--- a/manifests/profile/pacemaker/glance.pp
+++ b/manifests/profile/pacemaker/glance.pp
@@ -22,19 +22,10 @@
# (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')
-#
# [*glance_backend*]
# (Optional) Glance backend(s) to use.
# Defaults to downcase(hiera('glance_backend', 'swift'))
#
-# [*glance_file_pcmk_manage*]
-# (Optional) Whether or not manage glance_file_pcmk.
-# Defaults to hiera('glance_file_pcmk_manage', false)
-#
# [*glance_file_pcmk_device*]
# (Optional) Device to mount glance file backend.
# Defaults to hiera('glance_file_pcmk_device', '')
@@ -47,21 +38,29 @@
# (Optional) Filesystem type to mount glance file backend.
# Defaults to hiera('glance_file_pcmk_fstype', '')
#
+# [*glance_file_pcmk_manage*]
+# (Optional) Whether or not manage glance_file_pcmk.
+# Defaults to hiera('glance_file_pcmk_manage', false)
+#
# [*glance_file_pcmk_options*]
# (Optional) pcmk options to mount Glance file backend..
# Defaults to hiera('glance_file_pcmk_options', '')
#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
class tripleo::profile::pacemaker::glance (
$bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
$glance_backend = downcase(hiera('glance_backend', 'swift')),
- $glance_file_pcmk_manage = hiera('glance_file_pcmk_manage', false),
$glance_file_pcmk_device = hiera('glance_file_pcmk_device', ''),
$glance_file_pcmk_directory = hiera('glance_file_pcmk_directory', ''),
$glance_file_pcmk_fstype = hiera('glance_file_pcmk_fstype', ''),
+ $glance_file_pcmk_manage = hiera('glance_file_pcmk_manage', false),
$glance_file_pcmk_options = hiera('glance_file_pcmk_options', ''),
+ $step = hiera('step'),
) {
-
Service <| tag == 'glance-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -76,9 +75,7 @@ class tripleo::profile::pacemaker::glance (
}
include ::tripleo::profile::base::glance::api
- class { '::tripleo::profile::base::glance::registry':
- sync_db => $pacemaker_master,
- }
+ include ::tripleo::profile::base::glance::registry
if $step >= 4 {
if $glance_backend == 'file' and $glance_file_pcmk_manage {
diff --git a/manifests/profile/pacemaker/gnocchi.pp b/manifests/profile/pacemaker/gnocchi.pp
new file mode 100644
index 0000000..5bfc174
--- /dev/null
+++ b/manifests/profile/pacemaker/gnocchi.pp
@@ -0,0 +1,97 @@
+# 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::gnocchi
+#
+# Gnocchi Pacemaker HA profile for tripleo
+#
+# === Parameters
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*gnocchi_indexer_backend*]
+# (Optional) Gnocchi indexer backend
+# Defaults to mysql
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::pacemaker::gnocchi (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $gnocchi_indexer_backend = downcase(hiera('gnocchi_indexer_backend', 'mysql')),
+ $step = hiera('step'),
+) {
+ Service <| tag == 'gnocchi-service' |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
+
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ if $step >= 2 and $pacemaker_master {
+ if $gnocchi_indexer_backend == 'mysql' {
+ class { '::gnocchi::db::mysql':
+ require => Exec['galera-ready'],
+ }
+ }
+ }
+
+ if $step >= 3 {
+ include ::gnocchi
+ include ::gnocchi::config
+ include ::gnocchi::client
+ if $pacemaker_master {
+ include ::gnocchi::db::sync
+ }
+ }
+
+ if $step >= 5 and $pacemaker_master {
+
+ pacemaker::constraint::base { 'keystone-then-gnocchi-metricd-constraint':
+ constraint_type => 'order',
+ first_resource => 'openstack-core-clone',
+ second_resource => "${::gnocchi::params::metricd_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::gnocchi::params::metricd_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::base { 'gnocchi-metricd-then-gnocchi-statsd-constraint':
+ constraint_type => 'order',
+ first_resource => "${::gnocchi::params::metricd_service_name}-clone",
+ second_resource => "${::gnocchi::params::statsd_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::gnocchi::params::metricd_service_name],
+ Pacemaker::Resource::Service[$::gnocchi::params::statsd_service_name]],
+ }
+ pacemaker::constraint::colocation { 'gnocchi-statsd-with-metricd-colocation':
+ source => "${::gnocchi::params::statsd_service_name}-clone",
+ target => "${::gnocchi::params::metricd_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::gnocchi::params::metricd_service_name],
+ Pacemaker::Resource::Service[$::gnocchi::params::statsd_service_name]],
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/gnocchi/api.pp b/manifests/profile/pacemaker/gnocchi/api.pp
new file mode 100644
index 0000000..29f2435
--- /dev/null
+++ b/manifests/profile/pacemaker/gnocchi/api.pp
@@ -0,0 +1,32 @@
+# 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::gnocchi::api
+#
+# Gnocchi profile for tripleo api
+#
+# === Parameters
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::pacemaker::gnocchi::api (
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::pacemaker::gnocchi
+ include ::tripleo::profile::pacemaker::apache
+ include ::tripleo::profile::base::gnocchi::api
+}
diff --git a/manifests/profile/pacemaker/gnocchi/metricd.pp b/manifests/profile/pacemaker/gnocchi/metricd.pp
new file mode 100644
index 0000000..c9dc2d9
--- /dev/null
+++ b/manifests/profile/pacemaker/gnocchi/metricd.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::gnocchi::metricd
+#
+# Gnocchi metricd profile
+#
+# === Parameters
+#
+# [*pacemaker_master*]
+# (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::gnocchi::metricd (
+ $pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ include ::gnocchi::params
+ include ::tripleo::profile::pacemaker::gnocchi
+
+ if $step >= 4 and downcase($::hostname) == $pacemaker_master {
+
+ include ::gnocchi::metricd
+
+ pacemaker::resource::service { $::gnocchi::params::metricd_service_name :
+ clone_params => 'interleave=true',
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/gnocchi/statsd.pp b/manifests/profile/pacemaker/gnocchi/statsd.pp
new file mode 100644
index 0000000..42d30b9
--- /dev/null
+++ b/manifests/profile/pacemaker/gnocchi/statsd.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::gnocchi::statsd
+#
+# Gnocchi statsd profile
+#
+# === Parameters
+#
+# [*pacemaker_master*]
+# (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::gnocchi::statsd (
+ $pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ include ::gnocchi::params
+ include ::tripleo::profile::pacemaker::gnocchi
+
+ if $step >= 4 and downcase($::hostname) == $pacemaker_master {
+
+ include ::gnocchi::statsd
+
+ pacemaker::resource::service { $::gnocchi::params::statsd_service_name :
+ clone_params => 'interleave=true',
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/haproxy.pp b/manifests/profile/pacemaker/haproxy.pp
index a7aca58..b2e127b 100644
--- a/manifests/profile/pacemaker/haproxy.pp
+++ b/manifests/profile/pacemaker/haproxy.pp
@@ -22,21 +22,20 @@
# (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')
#
-# [*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'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
$step = hiera('step'),
- $enable_load_balancer = hiera('enable_load_balancer', true)
) {
-
include ::tripleo::profile::base::haproxy
if $::hostname == downcase($bootstrap_node) {
@@ -45,6 +44,12 @@ class tripleo::profile::pacemaker::haproxy (
$pacemaker_master = false
}
+ if $step >= 1 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ tripleo::pacemaker::resource_restart_flag { 'haproxy-clone':
+ subscribe => Concat['/etc/haproxy/haproxy.cfg'],
+ }
+ }
+
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
diff --git a/manifests/profile/pacemaker/heat.pp b/manifests/profile/pacemaker/heat.pp
index e72f02a..e3c1598 100644
--- a/manifests/profile/pacemaker/heat.pp
+++ b/manifests/profile/pacemaker/heat.pp
@@ -18,20 +18,14 @@
#
# === 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'),
+ $step = hiera('step'),
) {
-
Service <| tag == 'heat-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -39,8 +33,6 @@ class tripleo::profile::pacemaker::heat (
stop => '/bin/true',
}
- class { '::tripleo::profile::base::heat':
- bootstrap_master => $bootstrap_node,
- }
+ include ::tripleo::profile::base::heat
}
diff --git a/manifests/profile/pacemaker/heat/api.pp b/manifests/profile/pacemaker/heat/api.pp
index ed9ca5b..0fc4f8a 100644
--- a/manifests/profile/pacemaker/heat/api.pp
+++ b/manifests/profile/pacemaker/heat/api.pp
@@ -28,10 +28,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::heat::api (
- $bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
diff --git a/manifests/profile/pacemaker/heat/api_cfn.pp b/manifests/profile/pacemaker/heat/api_cfn.pp
index d3ba6e4..1230c6b 100644
--- a/manifests/profile/pacemaker/heat/api_cfn.pp
+++ b/manifests/profile/pacemaker/heat/api_cfn.pp
@@ -28,10 +28,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::heat::api_cfn (
- $bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
diff --git a/manifests/profile/pacemaker/heat/api_cloudwatch.pp b/manifests/profile/pacemaker/heat/api_cloudwatch.pp
index a7784fb..6110a0c 100644
--- a/manifests/profile/pacemaker/heat/api_cloudwatch.pp
+++ b/manifests/profile/pacemaker/heat/api_cloudwatch.pp
@@ -28,10 +28,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::heat::api_cloudwatch (
- $bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
diff --git a/manifests/profile/pacemaker/heat/engine.pp b/manifests/profile/pacemaker/heat/engine.pp
index 47b8a09..88744ad 100644
--- a/manifests/profile/pacemaker/heat/engine.pp
+++ b/manifests/profile/pacemaker/heat/engine.pp
@@ -28,10 +28,9 @@
# Defaults to hiera('step')
#
class tripleo::profile::pacemaker::heat::engine (
- $bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
@@ -39,9 +38,7 @@ class tripleo::profile::pacemaker::heat::engine (
}
include ::tripleo::profile::pacemaker::heat
- class { '::tripleo::profile::base::heat::engine':
- sync_db => $pacemaker_master,
- }
+ include ::tripleo::profile::base::heat::engine
if $step >= 5 and $pacemaker_master {
pacemaker::resource::service { $::heat::params::engine_service_name :
diff --git a/manifests/profile/pacemaker/keystone.pp b/manifests/profile/pacemaker/keystone.pp
index 46a40db..db14aea 100644
--- a/manifests/profile/pacemaker/keystone.pp
+++ b/manifests/profile/pacemaker/keystone.pp
@@ -22,21 +22,20 @@
# (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')
#
-# [*enable_load_balancer*]
-# (Optional) Whether load balancing is enabled for this cluster
-# Defaults to hiera('enable_load_balancer', true)
-#
class tripleo::profile::pacemaker::keystone (
$bootstrap_node = hiera('bootstrap_nodeid'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
$step = hiera('step'),
- $enable_load_balancer = hiera('enable_load_balancer', true)
) {
-
Service <| tag == 'keystone-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -46,17 +45,12 @@ class tripleo::profile::pacemaker::keystone (
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
- $manage_roles = true
} else {
$pacemaker_master = false
- $manage_roles = false
}
- class { '::tripleo::profile::base::keystone':
- sync_db => $pacemaker_master,
- manage_roles => $manage_roles,
- manage_endpoint => $manage_roles
- }
+ include ::tripleo::profile::base::keystone
+ include ::tripleo::profile::pacemaker::apache
if $step >= 5 and $pacemaker_master and $enable_load_balancer {
pacemaker::constraint::base { 'haproxy-then-keystone-constraint':
diff --git a/manifests/profile/pacemaker/manila.pp b/manifests/profile/pacemaker/manila.pp
index 37cab9f..a7f91fc 100644
--- a/manifests/profile/pacemaker/manila.pp
+++ b/manifests/profile/pacemaker/manila.pp
@@ -22,86 +22,120 @@
# (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')
+# [*cinder_volume_type*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::cinder_volume_type', '')
+#
+# [*driver_handles_share_servers*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::driver_handles_share_servers')
#
# [*manila_generic_enable*]
# (Optional) Enable the generic backend.
# Defaults to hiera('manila_generic_enable_backend', 'false')
#
-# [*driver_handles_share_servers*]
+# [*max_time_to_attach*]
# (Optional)
-# Defaults to hiera('manila::backend::generic::driver_handles_share_servers')
+# Defaults to hiera('manila::backend::generic::max_time_to_attach')
+#
+# [*max_time_to_create_volume*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::max_time_to_create_volume')
+#
+# [*service_instance_flavor_id*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_flavor_id')
+#
+# [*service_instance_password*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_password')
+#
+# [*service_instance_smb_config_path*]
+# (Optional)
+# Defaults to downcase(hiera('manila::backend::generic::service_instance_smb_config_path'))
+#
+# [*service_instance_user*]
+# (Optional)
+# Defaults to hiera('manila::service_instance::service_instance_user')
+#
+# [*share_mount_path*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::share_mount_path')
+#
+# [*share_volume_fstype*]
+# (Optional)
+# Defaults to hiera('manila::backend::generic::share_volume_fstype')
#
# [*smb_template_config_path*]
# (Optional)
# Defaults to hiera('manila::backend::generic::smb_template_config_path')
#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
# [*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')
+# [*manila_cephfsnative_enable*]
+# (Optional) Enable the CephFS Native backend.
+# Defaults to hiera('manila_cephfsnative_enable_backend', 'false')
#
-# [*max_time_to_create_volume*]
+# [*cephfs_handles_share_servers*]
# (Optional)
-# Defaults to hiera('manila::backend::generic::max_time_to_create_volume')
+# Defaults to hiera('manila::backend::cephfsnative::driver_handles_share_servers', false)
#
-# [*max_time_to_attach*]
+# [*cephfs_backend_name*]
# (Optional)
-# Defaults to hiera('manila::backend::generic::max_time_to_attach')
+# Defaults to hiera('manila::backend::cephfsnative::cephfs_backend_name')
#
-# [*service_instance_smb_config_path*]
+# [*cephfs_conf_path*]
# (Optional)
-# Defaults to downcase(hiera('manila::backend::generic::service_instance_smb_config_path'))
+# Defaults to hiera('manila::backend::cephfsnative::cephfs_conf_path')
#
-# [*share_volume_fstype*]
+# [*cephfs_auth_id*]
# (Optional)
-# Defaults to hiera('manila::backend::generic::share_volume_fstype')
+# Defaults to hiera('manila::backend::cephfsnative::cephfs_auth_id')
#
-# [*cinder_volume_type*]
+# [*cephfs_cluster_name*]
# (Optional)
-# Defaults to hiera('manila::backend::generic::cinder_volume_type', '')
+# Defaults to hiera('manila::backend::cephfsnative::cephfs_cluster_name')
#
-# [*service_instance_user*]
+# [*cephfs_enable_snapshots*]
# (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')
+# Defaults to hiera('manila::backend::cephfsnative::cephfs_enable_snapshots')
#
class tripleo::profile::pacemaker::manila (
$bootstrap_node = hiera('bootstrap_nodeid'),
- $step = hiera('step'),
- $manila_generic_enable = hiera('manila_generic_enable_backend', false),
+ $cinder_volume_type = hiera('manila::backend::generic::cinder_volume_type', ''),
$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'),
+ $manila_generic_enable = hiera('manila_generic_enable_backend', false),
$max_time_to_attach = hiera('manila::backend::generic::max_time_to_attach'),
+ $max_time_to_create_volume = hiera('manila::backend::generic::max_time_to_create_volume'),
+ $service_instance_flavor_id = hiera('manila::service_instance::service_instance_flavor_id'),
+ $service_instance_password = hiera('manila::service_instance::service_instance_password'),
$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'),
+ $share_mount_path = hiera('manila::backend::generic::share_mount_path'),
+ $share_volume_fstype = hiera('manila::backend::generic::share_volume_fstype'),
+ $smb_template_config_path = hiera('manila::backend::generic::smb_template_config_path'),
+ $step = hiera('step'),
+ $volume_name_template = hiera('manila::backend::generic::volume_name_template'),
+ $volume_snapshot_name_template = hiera('manila::backend::generic::volume_snapshot_name_template'),
+ $manila_cephfsnative_enable = hiera('manila::backend::cephfsnative::enable_backend', false),
+ $cephfs_handles_share_servers = hiera('manila::backend::cephfsnative::driver_handles_share_servers'),
+ $cephfs_backend_name = hiera('manila::backend::cephfsnative::cephfs_backend_name'),
+ $cephfs_conf_path = hiera('manila::backend::cephfsnative::cephfs_conf_path'),
+ $cephfs_auth_id = hiera('manila::backend::cephfsnative::cephfs_auth_id'),
+ $cephfs_cluster_name = hiera('manila::backend::cephfsnative::cephfs_cluster_name'),
+ $cephfs_enable_snapshots = hiera('manila::backend::cephfsnative::cephfs_enable_snapshots'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
@@ -122,7 +156,6 @@ class tripleo::profile::pacemaker::manila (
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 :
@@ -147,10 +180,34 @@ class tripleo::profile::pacemaker::manila (
include ::manila::volume::cinder
}
- $manila_enabled_backends = delete_undef_values([$manila_generic_backend])
+ # manila cephfsnative:
+ if $manila_cephfsnative_enable {
+ $manila_cephfsnative_backend = hiera('manila::backend::cephfsnative::title')
+ manila::backend::cephfsnative { $manila_cephfsnative_backend :
+ driver_handles_share_servers => $cephfs_handles_share_servers,
+ cephfs_backend_name => $cephfs_backend_name,
+ cephfs_conf_path => $cephfs_conf_path,
+ cephfs_auth_id => $cephfs_auth_id,
+ cephfs_cluster_name => $cephfs_cluster_name,
+ cephfs_enable_snapshots => $cephfs_enable_snapshots,
+ }
+ }
+
+ $manila_enabled_backends = delete_undef_values(
+ [
+ $manila_generic_backend,
+ $manila_cephfsnative_backend
+ ]
+ )
class { '::manila::backends' :
enabled_share_backends => $manila_enabled_backends,
}
+
+ if $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ Manila_api_paste_ini<||> ~> Tripleo::Pacemaker::Resource_restart_flag["${::manila::params::share_service}"]
+ Manila_config<||> ~> Tripleo::Pacemaker::Resource_restart_flag["${::manila::params::share_service}"]
+ tripleo::pacemaker::resource_restart_flag { "${::manila::params::share_service}": }
+ }
}
if $step >= 5 and $pacemaker_master {
diff --git a/manifests/profile/pacemaker/memcached.pp b/manifests/profile/pacemaker/memcached.pp
index 09af5d6..2a6bd4d 100644
--- a/manifests/profile/pacemaker/memcached.pp
+++ b/manifests/profile/pacemaker/memcached.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::memcached (
$bootstrap_node = hiera('bootstrap_nodeid'),
$step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
diff --git a/manifests/profile/pacemaker/neutron.pp b/manifests/profile/pacemaker/neutron.pp
index fff731d..6525126 100644
--- a/manifests/profile/pacemaker/neutron.pp
+++ b/manifests/profile/pacemaker/neutron.pp
@@ -18,22 +18,14 @@
#
# === Parameters
#
-# [*step*]
-# (Optional) The step in the deployment
-# Defaults to hiera('step')
-#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid', undef)
+# [*enable_dhcp*]
+# (Optional) Whether to include the Neutron DHCP agent pacemaker profile
+# Defaults to hiera('neutron::enable_dhcp_agent', false)
#
# [*enable_l3*]
# (Optional) Whether to include the Neutron L3 agent pacemaker profile
# Defaults to hiera('neutron::enable_l3_agent', false)
#
-# [*enable_dhcp*]
-# (Optional) Whether to include the Neutron DHCP agent pacemaker profile
-# Defaults to hiera('neutron::enable_dhcp_agent', false)
-#
# [*enable_metadata*]
# (Optional) Whether to include the Neutron Metadata agent pacemaker profile
# Defaults to hiera('neutron::enable_metadata_agent', false)
@@ -42,16 +34,24 @@
# (Optional) Whether to include the Neutron OVS agent pacemaker profile
# Defaults to hiera('neutron::enable_ovs_agent', false)
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
+# [*step*]
+# (Optional) The step in the deployment
+# Defaults to hiera('step')
+#
class tripleo::profile::pacemaker::neutron (
- $step = hiera('step'),
- $pacemaker_master = hiera('bootstrap_nodeid', undef),
# We can drop the hiera defaults once the neutron roles are decomposed
- $enable_l3 = hiera('neutron::enable_l3_agent', false),
$enable_dhcp = hiera('neutron::enable_dhcp_agent', false),
+ $enable_l3 = hiera('neutron::enable_l3_agent', false),
$enable_metadata = hiera('neutron::enable_metadata_agent', false),
$enable_ovs = hiera('neutron::enable_ovs_agent', false),
+ #Don't drop below this line
+ $pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
Service <|
tag == 'neutron-service'
|> {
@@ -61,9 +61,7 @@ class tripleo::profile::pacemaker::neutron (
stop => '/bin/true',
}
- class { '::tripleo::profile::base::neutron':
- sync_db => ($::hostname == downcase($pacemaker_master)),
- }
+ include ::tripleo::profile::base::neutron
if $step >= 4 {
include ::neutron::params
@@ -183,5 +181,31 @@ class tripleo::profile::pacemaker::neutron (
Pacemaker::Resource::Service[$::neutron::params::metadata_agent_service]]
}
}
+
+ #VSM
+ if 'cisco_n1kv' in hiera('neutron::plugins::ml2::mechanism_drivers') {
+ pacemaker::resource::ocf { 'vsm-p' :
+ ocf_agent_name => 'heartbeat:VirtualDomain',
+ resource_params => 'force_stop=true config=/var/spool/cisco/vsm/vsm_primary_deploy.xml',
+ require => Class['n1k_vsm'],
+ meta_params => 'resource-stickiness=INFINITY',
+ }
+ if str2bool(hiera('n1k_vsm::pacemaker_control', true)) {
+ pacemaker::resource::ocf { 'vsm-s' :
+ ocf_agent_name => 'heartbeat:VirtualDomain',
+ resource_params => 'force_stop=true config=/var/spool/cisco/vsm/vsm_secondary_deploy.xml',
+ require => Class['n1k_vsm'],
+ meta_params => 'resource-stickiness=INFINITY',
+ }
+ pacemaker::constraint::colocation { 'vsm-colocation-contraint':
+ source => 'vsm-p',
+ target => 'vsm-s',
+ score => '-INFINITY',
+ require => [Pacemaker::Resource::Ocf['vsm-p'],
+ Pacemaker::Resource::Ocf['vsm-s']],
+ }
+ }
+ }
+
}
}
diff --git a/manifests/profile/pacemaker/neutron/dhcp.pp b/manifests/profile/pacemaker/neutron/dhcp.pp
index d738f21..e76012f 100644
--- a/manifests/profile/pacemaker/neutron/dhcp.pp
+++ b/manifests/profile/pacemaker/neutron/dhcp.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
# [*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', undef)
-#
class tripleo::profile::pacemaker::neutron::dhcp (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
include ::tripleo::profile::base::neutron::dhcp
diff --git a/manifests/profile/pacemaker/neutron/l3.pp b/manifests/profile/pacemaker/neutron/l3.pp
index fec4af2..c3ae3b8 100644
--- a/manifests/profile/pacemaker/neutron/l3.pp
+++ b/manifests/profile/pacemaker/neutron/l3.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
# [*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', undef)
-#
class tripleo::profile::pacemaker::neutron::l3 (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
include ::tripleo::profile::base::neutron::l3
diff --git a/manifests/profile/pacemaker/neutron/metadata.pp b/manifests/profile/pacemaker/neutron/metadata.pp
index 4fccea2..f09edba 100644
--- a/manifests/profile/pacemaker/neutron/metadata.pp
+++ b/manifests/profile/pacemaker/neutron/metadata.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
# [*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', undef)
-#
class tripleo::profile::pacemaker::neutron::metadata (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
include ::tripleo::profile::base::neutron::metadata
diff --git a/manifests/profile/pacemaker/neutron/midonet.pp b/manifests/profile/pacemaker/neutron/midonet.pp
index 9d380f0..453641a 100644
--- a/manifests/profile/pacemaker/neutron/midonet.pp
+++ b/manifests/profile/pacemaker/neutron/midonet.pp
@@ -18,18 +18,18 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
# [*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', undef)
-#
class tripleo::profile::pacemaker::neutron::midonet (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
diff --git a/manifests/profile/pacemaker/neutron/ovs.pp b/manifests/profile/pacemaker/neutron/ovs.pp
index a330de1..7e3b15c 100644
--- a/manifests/profile/pacemaker/neutron/ovs.pp
+++ b/manifests/profile/pacemaker/neutron/ovs.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid', undef)
+#
# [*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', undef)
-#
class tripleo::profile::pacemaker::neutron::ovs (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid', undef),
+ $step = hiera('step'),
) {
-
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
include ::tripleo::profile::base::neutron::ovs
diff --git a/manifests/profile/pacemaker/neutron/plugins/ml2.pp b/manifests/profile/pacemaker/neutron/plugins/ml2.pp
index 6c9d8b1..aff682a 100644
--- a/manifests/profile/pacemaker/neutron/plugins/ml2.pp
+++ b/manifests/profile/pacemaker/neutron/plugins/ml2.pp
@@ -18,19 +18,9 @@
#
# === Parameters
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid', undef)
-#
-class tripleo::profile::pacemaker::neutron::plugins::ml2 (
- $pacemaker_master = hiera('bootstrap_nodeid', undef),
-) {
-
+class tripleo::profile::pacemaker::neutron::plugins::ml2
+{
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
-
- class { '::tripleo::profile::base::neutron::plugins::ml2':
- sync_db => ($::hostname == downcase($pacemaker_master))
- }
-
+ include ::tripleo::profile::base::neutron::plugins::ml2
}
diff --git a/manifests/profile/pacemaker/neutron/plugins/nuage.pp b/manifests/profile/pacemaker/neutron/plugins/nuage.pp
index ea40d38..03cdb7e 100644
--- a/manifests/profile/pacemaker/neutron/plugins/nuage.pp
+++ b/manifests/profile/pacemaker/neutron/plugins/nuage.pp
@@ -18,16 +18,7 @@
#
# === Parameters
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid', undef)
-#
-class tripleo::profile::pacemaker::neutron::plugins::nuage (
- $pacemaker_master = hiera('bootstrap_nodeid', undef),
-) {
-
- class { '::tripleo::profile::base::neutron::plugins::nuage':
- sync_db => ($::hostname == downcase($pacemaker_master))
- }
-
+class tripleo::profile::pacemaker::neutron::plugins::nuage
+{
+ include ::tripleo::profile::base::neutron::plugins::nuage
}
diff --git a/manifests/profile/pacemaker/neutron/plugins/opencontrail.pp b/manifests/profile/pacemaker/neutron/plugins/opencontrail.pp
index 8db3cb2..438245a 100644
--- a/manifests/profile/pacemaker/neutron/plugins/opencontrail.pp
+++ b/manifests/profile/pacemaker/neutron/plugins/opencontrail.pp
@@ -18,16 +18,7 @@
#
# === Parameters
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid', undef)
-#
-class tripleo::profile::pacemaker::neutron::plugins::opencontrail (
- $pacemaker_master = hiera('bootstrap_nodeid', undef),
-) {
-
- class { '::tripleo::profile::base::neutron::plugins::opencontrail':
- sync_db => ($::hostname == downcase($pacemaker_master))
- }
-
+class tripleo::profile::pacemaker::neutron::plugins::opencontrail
+{
+ include ::tripleo::profile::base::neutron::plugins::opencontrail
}
diff --git a/manifests/profile/pacemaker/neutron/plugins/plumgrid.pp b/manifests/profile/pacemaker/neutron/plugins/plumgrid.pp
index 57f9e31..38b2179 100644
--- a/manifests/profile/pacemaker/neutron/plugins/plumgrid.pp
+++ b/manifests/profile/pacemaker/neutron/plugins/plumgrid.pp
@@ -18,16 +18,7 @@
#
# === Parameters
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid', undef)
-#
-class tripleo::profile::pacemaker::neutron::plugins::plumgrid (
- $pacemaker_master = hiera('bootstrap_nodeid', undef),
-) {
-
- class { '::tripleo::profile::base::neutron::plugins::plumgrid':
- sync_db => ($::hostname == downcase($pacemaker_master))
- }
-
+class tripleo::profile::pacemaker::neutron::plugins::plumgrid
+{
+ include ::tripleo::profile::base::neutron::plugins::plumgrid
}
diff --git a/manifests/profile/pacemaker/neutron/server.pp b/manifests/profile/pacemaker/neutron/server.pp
index acd7993..d817ee7 100644
--- a/manifests/profile/pacemaker/neutron/server.pp
+++ b/manifests/profile/pacemaker/neutron/server.pp
@@ -31,7 +31,6 @@ class tripleo::profile::pacemaker::neutron::server (
$pacemaker_master = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
) {
-
include ::neutron::params
include ::tripleo::profile::pacemaker::neutron
diff --git a/manifests/profile/pacemaker/nova.pp b/manifests/profile/pacemaker/nova.pp
index 13c6128..222035e 100644
--- a/manifests/profile/pacemaker/nova.pp
+++ b/manifests/profile/pacemaker/nova.pp
@@ -25,7 +25,13 @@
class tripleo::profile::pacemaker::nova (
$step = hiera('step'),
) {
-
- include ::tripleo::profile::base::nova
+ Service <|
+ tag == 'nova-service'
+ |> {
+ hasrestart => true,
+ restart => '/bin/true',
+ start => '/bin/true',
+ stop => '/bin/true',
+ }
}
diff --git a/manifests/profile/pacemaker/nova/api.pp b/manifests/profile/pacemaker/nova/api.pp
index 30ab733..188beda 100644
--- a/manifests/profile/pacemaker/nova/api.pp
+++ b/manifests/profile/pacemaker/nova/api.pp
@@ -18,18 +18,18 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to downcase(hiera('bootstrap_nodeid'))
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to downcase(hiera('bootstrap_nodeid'))
-#
class tripleo::profile::pacemaker::nova::api (
- $step = hiera('step'),
$pacemaker_master = downcase(hiera('bootstrap_nodeid')),
+ $step = hiera('step'),
) {
include ::nova::params
@@ -42,14 +42,46 @@ class tripleo::profile::pacemaker::nova::api (
stop => '/bin/true',
}
- class { '::tripleo::profile::base::nova::api':
- sync_db => (downcase($::hostname) == $pacemaker_master),
- }
+ include ::tripleo::profile::base::nova::api
if $step >= 5 and downcase($::hostname) == $pacemaker_master {
pacemaker::resource::service { $::nova::params::api_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'nova-vncproxy-then-nova-api-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::vncproxy_service_name}-clone",
+ second_resource => "${::nova::params::api_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+ Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-api-with-nova-vncproxy-colocation':
+ source => "${::nova::params::api_service_name}-clone",
+ target => "${::nova::params::vncproxy_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name],
+ Pacemaker::Resource::Service[$::nova::params::api_service_name]],
+ }
+ pacemaker::constraint::base { 'nova-api-then-nova-scheduler-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::api_service_name}-clone",
+ second_resource => "${::nova::params::scheduler_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+ Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-scheduler-with-nova-api-colocation':
+ source => "${::nova::params::scheduler_service_name}-clone",
+ target => "${::nova::params::api_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::api_service_name],
+ Pacemaker::Resource::Service[$::nova::params::scheduler_service_name]],
+ }
+
}
}
diff --git a/manifests/profile/pacemaker/nova/conductor.pp b/manifests/profile/pacemaker/nova/conductor.pp
index 495c92e..f2605cb 100644
--- a/manifests/profile/pacemaker/nova/conductor.pp
+++ b/manifests/profile/pacemaker/nova/conductor.pp
@@ -18,18 +18,18 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::conductor (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
include ::nova::params
@@ -47,6 +47,30 @@ class tripleo::profile::pacemaker::nova::conductor (
pacemaker::resource::service { $::nova::params::conductor_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'nova-scheduler-then-nova-conductor-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::scheduler_service_name}-clone",
+ second_resource => "${::nova::params::conductor_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-conductor-with-nova-scheduler-colocation':
+ source => "${::nova::params::conductor_service_name}-clone",
+ target => "${::nova::params::scheduler_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::scheduler_service_name],
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
+ }
+
+
+ # If Service['nova-compute'] is in catalog, make sure we start it after
+ # nova-conductor pcmk resource.
+ # Also make sure to restart nova-compute if nova-conductor pcmk resource changed
+ # the state, since nova-compute is deployed at a previous step.
+ Pacemaker::Resource::Service[$::nova::params::conductor_service_name] ~> Service<| title == 'nova-compute' |>
}
}
diff --git a/manifests/profile/pacemaker/nova/consoleauth.pp b/manifests/profile/pacemaker/nova/consoleauth.pp
index fb9428a..6cd8c15 100644
--- a/manifests/profile/pacemaker/nova/consoleauth.pp
+++ b/manifests/profile/pacemaker/nova/consoleauth.pp
@@ -18,18 +18,18 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::consoleauth (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
include ::nova::params
@@ -47,6 +47,40 @@ class tripleo::profile::pacemaker::nova::consoleauth (
pacemaker::resource::service { $::nova::params::consoleauth_service_name:
clone_params => 'interleave=true',
}
+
+ pacemaker::constraint::base { 'keystone-then-nova-consoleauth-constraint':
+ constraint_type => 'order',
+ first_resource => 'openstack-core-clone',
+ second_resource => "${::nova::params::consoleauth_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::colocation { 'nova-consoleauth-with-openstack-core':
+ source => "${::nova::params::consoleauth_service_name}-clone",
+ target => 'openstack-core-clone',
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Ocf['openstack-core']],
+ }
+ pacemaker::constraint::base { 'nova-consoleauth-then-nova-vncproxy-constraint':
+ constraint_type => 'order',
+ first_resource => "${::nova::params::consoleauth_service_name}-clone",
+ second_resource => "${::nova::params::vncproxy_service_name}-clone",
+ first_action => 'start',
+ second_action => 'start',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+ }
+ pacemaker::constraint::colocation { 'nova-vncproxy-with-nova-consoleauth-colocation':
+ source => "${::nova::params::vncproxy_service_name}-clone",
+ target => "${::nova::params::consoleauth_service_name}-clone",
+ score => 'INFINITY',
+ require => [Pacemaker::Resource::Service[$::nova::params::consoleauth_service_name],
+ Pacemaker::Resource::Service[$::nova::params::vncproxy_service_name]],
+ }
+
}
}
diff --git a/manifests/profile/pacemaker/nova/scheduler.pp b/manifests/profile/pacemaker/nova/scheduler.pp
index 9e78c30..8c387d2 100644
--- a/manifests/profile/pacemaker/nova/scheduler.pp
+++ b/manifests/profile/pacemaker/nova/scheduler.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::scheduler (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::scheduler
diff --git a/manifests/profile/pacemaker/nova/vncproxy.pp b/manifests/profile/pacemaker/nova/vncproxy.pp
index ec71ca7..3652daa 100644
--- a/manifests/profile/pacemaker/nova/vncproxy.pp
+++ b/manifests/profile/pacemaker/nova/vncproxy.pp
@@ -18,20 +18,19 @@
#
# === Parameters
#
+# [*pacemaker_master*]
+# (Optional) The hostname of the pacemaker master
+# Defaults to hiera('bootstrap_nodeid')
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
-# [*pacemaker_master*]
-# (Optional) The hostname of the pacemaker master
-# Defaults to hiera('bootstrap_nodeid')
-#
class tripleo::profile::pacemaker::nova::vncproxy (
- $step = hiera('step'),
$pacemaker_master = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
) {
-
include ::nova::params
include ::tripleo::profile::pacemaker::nova
include ::tripleo::profile::base::nova::vncproxy
diff --git a/manifests/profile/pacemaker/rabbitmq.pp b/manifests/profile/pacemaker/rabbitmq.pp
index efb91b5..1f25e8b 100644
--- a/manifests/profile/pacemaker/rabbitmq.pp
+++ b/manifests/profile/pacemaker/rabbitmq.pp
@@ -22,21 +22,20 @@
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
+# [*erlang_cookie*]
+# (Optional) Content of erlang cookie.
+# Defaults to hiera('rabbitmq::erlang_cookie').
+#
# [*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'),
+ $step = hiera('step'),
) {
-
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
} else {
@@ -55,6 +54,12 @@ class tripleo::profile::pacemaker::rabbitmq (
require => Class['::rabbitmq'],
}
+ if $step >= 1 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ tripleo::pacemaker::resource_restart_flag { 'rabbitmq-clone':
+ subscribe => Class['rabbitmq::service'],
+ }
+ }
+
if $step >= 2 and $pacemaker_master {
pacemaker::resource::ocf { 'rabbitmq':
ocf_agent_name => 'heartbeat:rabbitmq-cluster',
diff --git a/manifests/profile/pacemaker/sahara.pp b/manifests/profile/pacemaker/sahara.pp
index 04b4edf..07cd882 100644
--- a/manifests/profile/pacemaker/sahara.pp
+++ b/manifests/profile/pacemaker/sahara.pp
@@ -18,20 +18,14 @@
#
# === 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'),
+ $step = hiera('step'),
) {
-
Service <| tag == 'sahara-service' |> {
hasrestart => true,
restart => '/bin/true',
@@ -39,43 +33,5 @@ class tripleo::profile::pacemaker::sahara (
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]],
- }
- }
+ include ::tripleo::profile::base::sahara
}
diff --git a/manifests/profile/pacemaker/sahara/api.pp b/manifests/profile/pacemaker/sahara/api.pp
new file mode 100644
index 0000000..0e3d97a
--- /dev/null
+++ b/manifests/profile/pacemaker/sahara/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::pacemaker::sahara::api
+#
+# Sahara 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::sahara::api (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ include ::tripleo::profile::pacemaker::sahara
+ include ::tripleo::profile::base::sahara::api
+
+ if $step >= 5 and $pacemaker_master {
+ # Sahara
+ pacemaker::resource::service { $::sahara::params::api_service_name :
+ clone_params => 'interleave=true',
+ }
+ }
+}
diff --git a/manifests/profile/pacemaker/sahara/engine.pp b/manifests/profile/pacemaker/sahara/engine.pp
new file mode 100644
index 0000000..ada6c06
--- /dev/null
+++ b/manifests/profile/pacemaker/sahara/engine.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::sahara::engine
+#
+# Sahara Engine 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::engine (
+ $bootstrap_node = hiera('bootstrap_nodeid'),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $pacemaker_master = true
+ } else {
+ $pacemaker_master = false
+ }
+
+ include ::tripleo::profile::pacemaker::sahara
+ include ::tripleo::profile::base::sahara::engine
+
+ if $step >= 5 and $pacemaker_master {
+ pacemaker::resource::service { $::sahara::params::engine_service_name :
+ clone_params => 'interleave=true',
+ }
+ }
+}
diff --git a/manifests/trusted_ca.pp b/manifests/trusted_ca.pp
new file mode 100644
index 0000000..4e62418
--- /dev/null
+++ b/manifests/trusted_ca.pp
@@ -0,0 +1,39 @@
+# Copyright 2016 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# == Class: tripleo::trusted_ca
+#
+# Does the necessary action to deploy and trust a CA certificate.
+#
+# === Parameters
+#
+# [*content*]
+# The content of the CA certificate in PEM format.
+#
+define tripleo::trusted_ca(
+ $content,
+) {
+ file { "/etc/pki/ca-trust/source/anchors/${name}.pem":
+ content => $content,
+ mode => '0644',
+ owner => 'root',
+ group => 'root',
+ }
+ exec { "trust-ca-${name}":
+ command => 'update-ca-trust extract',
+ path => '/usr/bin',
+ subscribe => File["/etc/pki/ca-trust/source/anchors/${name}.pem"],
+ refreshonly => true,
+ }
+}
diff --git a/manifests/trusted_cas.pp b/manifests/trusted_cas.pp
new file mode 100644
index 0000000..265a700
--- /dev/null
+++ b/manifests/trusted_cas.pp
@@ -0,0 +1,28 @@
+# 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::trusted_cas
+#
+# Does the necessary actions to deploy and trust a set of CA certificates.
+#
+# === Parameters
+#
+# [*ca_map*]
+# The content of the CA certificate in PEM format.
+#
+class tripleo::trusted_cas(
+ $ca_map = {},
+) {
+ create_resources('::tripleo::trusted_ca', $ca_map)
+}