aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md7
-rw-r--r--manifests/certmonger/haproxy.pp20
-rw-r--r--manifests/certmonger/mysql.pp84
-rw-r--r--manifests/firewall.pp7
-rw-r--r--manifests/firewall/rule.pp11
-rw-r--r--manifests/glance/nfs_mount.pp80
-rw-r--r--manifests/haproxy.pp139
-rw-r--r--manifests/keepalived.pp1
-rw-r--r--manifests/network/os_net_config.pp11
-rw-r--r--manifests/profile/base/aodh.pp9
-rw-r--r--manifests/profile/base/aodh/api.pp66
-rw-r--r--manifests/profile/base/barbican.pp36
-rw-r--r--manifests/profile/base/barbican/api.pp107
-rw-r--r--manifests/profile/base/ceilometer.pp9
-rw-r--r--manifests/profile/base/ceilometer/api.pp55
-rw-r--r--manifests/profile/base/ceilometer/collector.pp15
-rw-r--r--manifests/profile/base/ceph/rgw.pp20
-rw-r--r--manifests/profile/base/cinder.pp9
-rw-r--r--manifests/profile/base/cinder/api.pp56
-rw-r--r--manifests/profile/base/database/mysql.pp56
-rw-r--r--manifests/profile/base/glance/api.pp25
-rw-r--r--manifests/profile/base/gnocchi/api.pp59
-rw-r--r--manifests/profile/base/haproxy.pp2
-rw-r--r--manifests/profile/base/heat.pp11
-rw-r--r--manifests/profile/base/ironic.pp9
-rw-r--r--manifests/profile/base/keepalived.pp47
-rw-r--r--manifests/profile/base/keystone.pp65
-rw-r--r--manifests/profile/base/manila.pp9
-rw-r--r--manifests/profile/base/mistral.pp9
-rw-r--r--manifests/profile/base/neutron.pp9
-rw-r--r--manifests/profile/base/neutron/plugins/ml2/opendaylight.pp6
-rw-r--r--manifests/profile/base/neutron/server.pp33
-rw-r--r--manifests/profile/base/nova.pp9
-rw-r--r--manifests/profile/base/nova/api.pp57
-rw-r--r--manifests/profile/base/panko.pp47
-rw-r--r--manifests/profile/base/panko/api.pp86
-rw-r--r--manifests/profile/base/rabbitmq.pp6
-rw-r--r--manifests/profile/base/sahara.pp9
-rw-r--r--manifests/profile/base/swift/proxy.pp24
-rw-r--r--manifests/profile/base/zaqar.pp19
-rw-r--r--manifests/profile/pacemaker/database/mysql.pp3
-rw-r--r--manifests/profile/pacemaker/database/redis.pp17
-rw-r--r--manifests/profile/pacemaker/haproxy.pp2
-rw-r--r--manifests/ui.pp2
-rw-r--r--metadata.json2
-rw-r--r--releasenotes/notes/sriov_numvfs-40564db9e1be589b.yaml2
-rw-r--r--spec/classes/tripleo_firewall_spec.rb4
-rw-r--r--spec/classes/tripleo_profile_base_aodh_api_spec.rb18
-rw-r--r--spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_listener_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_notifier_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_aodh_spec.rb4
-rw-r--r--spec/classes/tripleo_profile_base_barbican_api_spec.rb107
-rw-r--r--spec/classes/tripleo_profile_base_barbican_spec.rb56
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_api_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceilometer_spec.rb2
-rw-r--r--spec/classes/tripleo_profile_base_ceph_rgw_spec.rb16
-rw-r--r--spec/fixtures/hieradata/default.yaml3
60 files changed, 1396 insertions, 193 deletions
diff --git a/README.md b/README.md
index 2d7d568..7ca7610 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,10 @@
+Team and repository tags
+========================
+
+[![Team and repository tags](http://governance.openstack.org/badges/puppet-tripleo.svg)](http://governance.openstack.org/reference/tags/index.html)
+
+<!-- Change things from this point on -->
+
# puppet-tripleo
Lightweight composition layer for Puppet TripleO.
diff --git a/manifests/certmonger/haproxy.pp b/manifests/certmonger/haproxy.pp
index 504acf3..3b8fd09 100644
--- a/manifests/certmonger/haproxy.pp
+++ b/manifests/certmonger/haproxy.pp
@@ -36,6 +36,10 @@
# The post-save-command that certmonger will use once it renews the
# certificate.
#
+# [*certmonger_ca*]
+# (Optional) The CA that certmonger will use to generate the certificates.
+# Defaults to hiera('certmonger_ca', 'local').
+#
# [*principal*]
# The haproxy service principal that is set for HAProxy in kerberos.
#
@@ -45,7 +49,8 @@ define tripleo::certmonger::haproxy (
$service_key,
$hostname,
$postsave_cmd,
- $principal = undef,
+ $certmonger_ca = hiera('certmonger_ca', 'local'),
+ $principal = undef,
){
include ::haproxy::params
certmonger_certificate { "${title}-cert":
@@ -69,10 +74,21 @@ define tripleo::certmonger::haproxy (
order => '01',
require => Certmonger_certificate["${title}-cert"],
}
+
+ if $certmonger_ca == 'local' {
+ $ca_pem = getparam(Class['tripleo::certmonger::ca::local'], 'ca_pem')
+ concat::fragment { "${title}-ca-fragment":
+ target => $service_pem,
+ source => $ca_pem,
+ order => '10',
+ require => Class['tripleo::certmonger::ca::local'],
+ }
+ }
+
concat::fragment { "${title}-key-fragment":
target => $service_pem,
source => $service_key,
- order => 10,
+ order => 20,
require => Certmonger_certificate["${title}-cert"],
}
}
diff --git a/manifests/certmonger/mysql.pp b/manifests/certmonger/mysql.pp
new file mode 100644
index 0000000..62aff9a
--- /dev/null
+++ b/manifests/certmonger/mysql.pp
@@ -0,0 +1,84 @@
+# 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::mysql
+#
+# Request a certificate for the MySQL/Mariadb service and do the necessary setup.
+#
+# === Parameters
+#
+# [*hostname*]
+# The hostname of the node. this will be set in the CN of the certificate.
+#
+# [*service_certificate*]
+# The path to the certificate that will be used for TLS in this service.
+#
+# [*service_key*]
+# The path to the key that will be used for TLS in this service.
+#
+# [*certmonger_ca*]
+# (Optional) The CA that certmonger will use to generate the certificates.
+# Defaults to hiera('certmonger_ca', 'local').
+#
+# [*mysql_network*]
+# (Optional) The network name where the mysql endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('mysql_network', undef)
+#
+# [*principal*]
+# (Optional) The haproxy service principal that is set for MySQL in kerberos.
+# Defaults to undef
+#
+class tripleo::certmonger::mysql (
+ $hostname,
+ $service_certificate,
+ $service_key,
+ $certmonger_ca = hiera('certmonger_ca', 'local'),
+ $mysql_network = hiera('mysql_network', undef),
+ $principal = undef,
+) {
+ include ::certmonger
+ include ::mysql::params
+
+ if !$mysql_network {
+ fail('mysql_network is not set in the hieradata.')
+ }
+
+ $postsave_cmd = "systemctl reload ${::mysql::params::service_name}"
+ certmonger_certificate { 'mysql' :
+ ensure => 'present',
+ certfile => $service_certificate,
+ keyfile => $service_key,
+ hostname => $hostname,
+ dnsname => $hostname,
+ principal => $principal,
+ postsave_cmd => $postsave_cmd,
+ ca => $certmonger_ca,
+ wait => true,
+ require => Class['::certmonger'],
+ }
+ file { $service_certificate :
+ owner => 'mysql',
+ group => 'mysql',
+ require => Certmonger_certificate['mysql'],
+ }
+ file { $service_key :
+ owner => 'mysql',
+ group => 'mysql',
+ require => Certmonger_certificate['mysql'],
+ }
+
+ File[$service_certificate] ~> Service<| title == $::mysql::params::service_name |>
+ File[$service_key] ~> Service<| title == $::mysql::params::service_name |>
+}
diff --git a/manifests/firewall.pp b/manifests/firewall.pp
index 3184cd3..8c6a53b 100644
--- a/manifests/firewall.pp
+++ b/manifests/firewall.pp
@@ -51,8 +51,6 @@ class tripleo::firewall(
$firewall_post_extras = {},
) {
- include ::stdlib
-
if $manage_firewall {
# Only purges IPv4 rules
@@ -79,14 +77,15 @@ class tripleo::firewall(
ensure_resource('class', 'tripleo::firewall::pre', {
'firewall_settings' => $firewall_pre_extras,
- 'stage' => 'setup',
})
ensure_resource('class', 'tripleo::firewall::post', {
- 'stage' => 'runtime',
'firewall_settings' => $firewall_post_extras,
})
+ Class['tripleo::firewall::pre'] -> Class['tripleo::firewall::post']
+ Service<||> -> Class['tripleo::firewall::post']
+
# Allow composable services to load their own custom
# example with Hiera.
# NOTE(dprince): In the future when we have a better hiera
diff --git a/manifests/firewall/rule.pp b/manifests/firewall/rule.pp
index c63162b..6801dc4 100644
--- a/manifests/firewall/rule.pp
+++ b/manifests/firewall/rule.pp
@@ -83,14 +83,21 @@ define tripleo::firewall::rule (
'sport' => $sport,
'proto' => $proto,
'action' => $action,
- 'state' => $state,
'source' => $source,
'iniface' => $iniface,
'chain' => $chain,
'destination' => $destination,
}
+ if $proto != 'gre' {
+ $state_rule = {
+ 'state' => $state
+ }
+ } else {
+ $state_rule = {}
+ }
+
- $rule = merge($basic, $extras)
+ $rule = merge($basic, $state_rule, $extras)
validate_hash($rule)
create_resources('firewall', { "${title}" => $rule })
diff --git a/manifests/glance/nfs_mount.pp b/manifests/glance/nfs_mount.pp
new file mode 100644
index 0000000..035191d
--- /dev/null
+++ b/manifests/glance/nfs_mount.pp
@@ -0,0 +1,80 @@
+# 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::glance::nfs_mount
+#
+# NFS mount for Glance image storage file backend
+#
+# === Parameters
+#
+# [*share*]
+# NFS share to mount, in 'IP:PATH' format.
+#
+# [*options*]
+# (Optional) NFS mount options. Defaults to
+# 'intr,context=system_u:object_r:glance_var_lib_t:s0'
+#
+# [*edit_fstab*]
+# (Optional) Whether to persist the mount info to fstab.
+# Defaults to true.
+#
+# [*fstab_fstype*]
+# (Optional) File system type to use in fstab for the mount.
+# Defaults to 'nfs4'.
+#
+# [*fstab_prepend_options*]
+# (Optional) Extra mount options for fstab (prepended to $options).
+# Defaults to 'bg', so that a potentially failed mount doesn't
+# prevent the machine from booting.
+#
+class tripleo::glance::nfs_mount (
+ $share,
+ $options = 'intr,context=system_u:object_r:glance_var_lib_t:s0',
+ $edit_fstab = true,
+ $fstab_fstype = 'nfs4',
+ $fstab_prepend_options = 'bg'
+) {
+
+ $images_dir = '/var/lib/glance/images'
+
+ if $options and $options != '' {
+ $options_part = "-o ${options}"
+ } else {
+ $options_part = ''
+ }
+
+ if $fstab_prepend_options and $fstab_prepend_options != '' {
+ $fstab_prepend_part = "${fstab_prepend_options},"
+ } else {
+ $fstab_prepend_part = ''
+ }
+
+ file { $images_dir:
+ ensure => directory,
+ } ->
+ exec { 'NFS mount for glance file backend':
+ path => ['/usr/sbin', '/usr/bin'],
+ command => "mount -t nfs '${share}' '${images_dir}' ${options_part}",
+ unless => "mount | grep ' ${images_dir} '",
+ }
+
+ if $edit_fstab {
+ file_line { 'NFS for glance in fstab':
+ ensure => present,
+ line => "${share} ${images_dir} ${fstab_fstype} ${fstab_prepend_part}${options} 0 0",
+ match => " ${images_dir} ",
+ path => '/etc/fstab',
+ }
+ }
+}
diff --git a/manifests/haproxy.pp b/manifests/haproxy.pp
index 02dddf1..a4ab0cc 100644
--- a/manifests/haproxy.pp
+++ b/manifests/haproxy.pp
@@ -19,10 +19,6 @@
#
# === Parameters:
#
-# [*keepalived*]
-# Whether to configure keepalived to manage the VIPs or not.
-# Defaults to true
-#
# [*haproxy_service_manage*]
# Will be passed as value for service_manage to HAProxy module.
# Defaults to true
@@ -37,7 +33,7 @@
#
# [*haproxy_default_timeout*]
# The value to use as timeout in the HAProxy default config section.
-# Defaults to [ 'http-request 10s', 'queue 1m', 'connect 10s', 'client 1m', 'server 1m', 'check 10s' ]
+# Defaults to [ 'http-request 10s', 'queue 2m', 'connect 10s', 'client 2m', 'server 2m', 'check 10s' ]
#
# [*haproxy_listen_bind_param*]
# A list of params to be added to the HAProxy listener bind directive. By
@@ -121,6 +117,11 @@
# String that sets the default ssl options to force on all "bind" lines.
# Defaults to 'no-sslv3'
#
+# [*ca_bundle*]
+# Path to the CA bundle to be used for HAProxy to validate the certificates of
+# the servers it balances
+# Defaults to '/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt'
+#
# [*haproxy_stats_certificate*]
# Filename of an HAProxy-compatible certificate and key file
# When set, enables SSL on the haproxy stats endpoint using the specified file.
@@ -182,6 +183,14 @@
# (optional) Enable or not Aodh API binding
# Defaults to hiera('aodh_api_enabled', false)
#
+# [*panko*]
+# (optional) Enable or not Panko API binding
+# Defaults to hiera('panko_api_enabled', false)
+#
+# [*barbican*]
+# (optional) Enable or not Barbican API binding
+# Defaults to hiera('barbican_api_enabled', false)
+#
# [*gnocchi*]
# (optional) Enable or not Gnocchi API binding
# Defaults to hiera('gnocchi_api_enabled', false)
@@ -226,6 +235,14 @@
# (optional) Enable check via clustercheck for mysql
# Defaults to false
#
+# [*mysql_member_options*]
+# The options to use for the mysql HAProxy balancer members.
+# If this parameter is undefined, the actual value configured will depend
+# on the value of $mysql_clustercheck. If cluster checking is enabled,
+# the mysql member options will be: "['backup', 'port 9200', 'on-marked-down shutdown-sessions', 'check', 'inter 1s']"
+# and if mysql cluster checking is disabled, the member options will be: "union($haproxy_member_options, ['backup'])"
+# Defaults to undef
+#
# [*rabbitmq*]
# (optional) Enable or not RabbitMQ binding
# Defaults to false
@@ -271,6 +288,10 @@
# (optional) Specify the network aodh is running on.
# Defaults to hiera('aodh_api_network', undef)
#
+# [*barbican_network*]
+# (optional) Specify the network barbican is running on.
+# Defaults to hiera('barbican_api_network', undef)
+#
# [*ceilometer_network*]
# (optional) Specify the network ceilometer is running on.
# Defaults to hiera('ceilometer_api_network', undef)
@@ -355,6 +376,10 @@
# (optional) Specify the network opendaylight is running on.
# Defaults to hiera('opendaylight_api_network', undef)
#
+# [*panko_network*]
+# (optional) Specify the network panko is running on.
+# Defaults to hiera('panko_api_network', undef)
+#
# [*sahara_network*]
# (optional) Specify the network sahara is running on.
# Defaults to hiera('sahara_api_network', undef)
@@ -376,6 +401,8 @@
# The available keys to modify the services' ports are:
# 'aodh_api_port' (Defaults to 8042)
# 'aodh_api_ssl_port' (Defaults to 13042)
+# 'barbican_api_port' (Defaults to 9311)
+# 'barbican_api_ssl_port' (Defaults to 13311)
# 'ceilometer_api_port' (Defaults to 8777)
# 'ceilometer_api_ssl_port' (Defaults to 13777)
# 'cinder_api_port' (Defaults to 8776)
@@ -412,6 +439,8 @@
# 'nova_metadata_port' (Defaults to 8775)
# 'nova_novnc_port' (Defaults to 6080)
# 'nova_novnc_ssl_port' (Defaults to 13080)
+# 'panko_api_port' (Defaults to 8779)
+# 'panko_api_ssl_port' (Defaults to 13779)
# 'sahara_api_port' (Defaults to 8386)
# 'sahara_api_ssl_port' (Defaults to 13386)
# 'swift_proxy_port' (Defaults to 8080)
@@ -431,11 +460,10 @@
class tripleo::haproxy (
$controller_virtual_ip,
$public_virtual_ip,
- $keepalived = true,
$haproxy_service_manage = true,
$haproxy_global_maxconn = 20480,
$haproxy_default_maxconn = 4096,
- $haproxy_default_timeout = [ 'http-request 10s', 'queue 1m', 'connect 10s', 'client 1m', 'server 1m', 'check 10s' ],
+ $haproxy_default_timeout = [ 'http-request 10s', 'queue 2m', 'connect 10s', 'client 2m', 'server 2m', 'check 10s' ],
$haproxy_listen_bind_param = [ 'transparent' ],
$haproxy_member_options = [ 'check', 'inter 2000', 'rise 2', 'fall 5' ],
$haproxy_log_address = '/dev/log',
@@ -449,6 +477,7 @@ class tripleo::haproxy (
$enable_internal_tls = hiera('enable_internal_tls', false),
$ssl_cipher_suite = '!SSLv2:kEECDH:kRSA:kEDH:kPSK:+3DES:!aNULL:!eNULL:!MD5:!EXP:!RC4:!SEED:!IDEA:!DES',
$ssl_options = 'no-sslv3',
+ $ca_bundle = '/etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt',
$haproxy_stats_certificate = undef,
$keystone_admin = hiera('keystone_enabled', false),
$keystone_public = hiera('keystone_enabled', false),
@@ -464,6 +493,8 @@ class tripleo::haproxy (
$nova_novncproxy = hiera('nova_vnc_proxy_enabled', false),
$ceilometer = hiera('ceilometer_api_enabled', false),
$aodh = hiera('aodh_api_enabled', false),
+ $panko = hiera('panko_api_enabled', false),
+ $barbican = hiera('barbican_api_enabled', false),
$gnocchi = hiera('gnocchi_api_enabled', false),
$mistral = hiera('mistral_api_enabled', false),
$swift_proxy_server = hiera('swift_proxy_enabled', false),
@@ -475,6 +506,7 @@ class tripleo::haproxy (
$ironic_inspector = hiera('ironic_inspector_enabled', false),
$mysql = hiera('mysql_enabled', false),
$mysql_clustercheck = false,
+ $mysql_member_options = undef,
$rabbitmq = false,
$docker_registry = hiera('enable_docker_registry', false),
$redis = hiera('redis_enabled', false),
@@ -486,6 +518,7 @@ class tripleo::haproxy (
$zaqar_ws = hiera('zaqar_api_enabled', false),
$ui = hiera('enable_ui', false),
$aodh_network = hiera('aodh_api_network', undef),
+ $barbican_network = hiera('barbican_api_network', false),
$ceilometer_network = hiera('ceilometer_api_network', undef),
$ceph_rgw_network = hiera('ceph_rgw_network', undef),
$cinder_network = hiera('cinder_api_network', undef),
@@ -506,6 +539,7 @@ class tripleo::haproxy (
$nova_metadata_network = hiera('nova_api_network', undef),
$nova_novncproxy_network = hiera('nova_vnc_proxy_network', undef),
$nova_osapi_network = hiera('nova_api_network', undef),
+ $panko_network = hiera('panko_api_network', undef),
$sahara_network = hiera('sahara_api_network', undef),
$swift_proxy_server_network = hiera('swift_proxy_network', undef),
$trove_network = hiera('trove_api_network', undef),
@@ -515,6 +549,8 @@ class tripleo::haproxy (
$default_service_ports = {
aodh_api_port => 8042,
aodh_api_ssl_port => 13042,
+ barbican_api_port => 9311,
+ barbican_api_ssl_port => 13311,
ceilometer_api_port => 8777,
ceilometer_api_ssl_port => 13777,
cinder_api_port => 8776,
@@ -551,6 +587,8 @@ class tripleo::haproxy (
nova_metadata_port => 8775,
nova_novnc_port => 6080,
nova_novnc_ssl_port => 13080,
+ panko_api_port => 8779,
+ panko_api_ssl_port => 13779,
sahara_api_port => 8386,
sahara_api_ssl_port => 13386,
swift_proxy_port => 8080,
@@ -569,8 +607,7 @@ class tripleo::haproxy (
$ports = merge($default_service_ports, $service_ports)
if $enable_internal_tls {
- # TODO(jaosorior): change verify none to verify required.
- $internal_tls_member_options = ['ssl', 'verify none']
+ $internal_tls_member_options = ['ssl', 'verify required', "ca-file ${ca_bundle}"]
} else {
$internal_tls_member_options = []
}
@@ -582,11 +619,6 @@ class tripleo::haproxy (
$controller_hosts_names_real = downcase(any2array(split($controller_hosts_names, ',')))
}
- # This code will be removed once we switch undercloud and overcloud to use both haproxy & keepalived roles.
- if $keepalived {
- include ::tripleo::keepalived
- }
-
# TODO(bnemec): When we have support for SSL on private and admin endpoints,
# have the haproxy stats endpoint use that certificate by default.
if $haproxy_stats_certificate {
@@ -759,6 +791,12 @@ class tripleo::haproxy (
service_port => $ports[neutron_api_port],
ip_addresses => hiera('neutron_api_node_ips', $controller_hosts_real),
server_names => hiera('neutron_api_node_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 }'],
+ },
public_ssl_port => $ports[neutron_api_ssl_port],
service_network => $neutron_network,
}
@@ -779,6 +817,7 @@ class tripleo::haproxy (
},
public_ssl_port => $ports[cinder_api_ssl_port],
service_network => $cinder_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
}
}
@@ -789,6 +828,7 @@ class tripleo::haproxy (
service_port => $ports[manila_api_port],
ip_addresses => hiera('manila_api_node_ips', $controller_hosts_real),
server_names => hiera('manila_api_node_names', $controller_hosts_names_real),
+ mode => 'http',
listen_options => {
'http-request' => [
'set-header X-Forwarded-Proto https if { ssl_fc }',
@@ -867,6 +907,7 @@ class tripleo::haproxy (
},
public_ssl_port => $ports[nova_api_ssl_port],
service_network => $nova_osapi_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
}
}
@@ -903,8 +944,15 @@ class tripleo::haproxy (
service_port => $ports[ceilometer_api_port],
ip_addresses => hiera('ceilometer_api_node_ips', $controller_hosts_real),
server_names => hiera('ceilometer_api_node_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 }'],
+ },
public_ssl_port => $ports[ceilometer_api_ssl_port],
service_network => $ceilometer_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
}
}
@@ -915,8 +963,46 @@ class tripleo::haproxy (
service_port => $ports[aodh_api_port],
ip_addresses => hiera('aodh_api_node_ips', $controller_hosts_real),
server_names => hiera('aodh_api_node_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 }'],
+ },
public_ssl_port => $ports[aodh_api_ssl_port],
service_network => $aodh_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
+ }
+ }
+
+ if $panko {
+ ::tripleo::haproxy::endpoint { 'panko':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('panko_api_vip', $controller_virtual_ip),
+ service_port => $ports[panko_api_port],
+ ip_addresses => hiera('panko_api_node_ips', $controller_hosts_real),
+ server_names => hiera('panko_api_node_names', $controller_hosts_names_real),
+ listen_options => {
+ 'http-request' => [
+ 'set-header X-Forwarded-Proto https if { ssl_fc }',
+ 'set-header X-Forwarded-Proto http if !{ ssl_fc }'],
+ },
+ public_ssl_port => $ports[panko_api_ssl_port],
+ service_network => $panko_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
+ }
+ }
+
+ if $barbican {
+ ::tripleo::haproxy::endpoint { 'barbican':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('barbican_api_vip', $controller_virtual_ip),
+ service_port => $ports[barbican_api_port],
+ ip_addresses => hiera('barbican_api_node_ips', $controller_hosts_real),
+ server_names => hiera('barbican_api_node_names', $controller_hosts_names_real),
+ public_ssl_port => $ports[barbican_api_ssl_port],
+ service_network => $barbican_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
}
}
@@ -927,8 +1013,15 @@ class tripleo::haproxy (
service_port => $ports[gnocchi_api_port],
ip_addresses => hiera('gnocchi_api_node_ips', $controller_hosts_real),
server_names => hiera('gnocchi_api_node_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 }'],
+ },
public_ssl_port => $ports[gnocchi_api_ssl_port],
service_network => $gnocchi_network,
+ member_options => union($haproxy_member_options, $internal_tls_member_options),
}
}
@@ -1066,13 +1159,21 @@ class tripleo::haproxy (
'stick-table' => 'type ip size 1000',
'stick' => 'on dst',
}
- $mysql_member_options = union($haproxy_member_options, ['backup', 'port 9200', 'on-marked-down shutdown-sessions'])
+ if $mysql_member_options {
+ $mysql_member_options_real = $mysql_member_options
+ } else {
+ $mysql_member_options_real = ['backup', 'port 9200', 'on-marked-down shutdown-sessions', 'check', 'inter 1s']
+ }
} else {
$mysql_listen_options = {
'timeout client' => '90m',
'timeout server' => '90m',
}
- $mysql_member_options = union($haproxy_member_options, ['backup'])
+ if $mysql_member_options {
+ $mysql_member_options_real = $mysql_member_options
+ } else {
+ $mysql_member_options_real = union($haproxy_member_options, ['backup'])
+ }
}
if $mysql {
@@ -1086,7 +1187,7 @@ class tripleo::haproxy (
ports => '3306',
ipaddresses => hiera('mysql_node_ips', $controller_hosts_real),
server_names => hiera('mysql_node_names', $controller_hosts_names_real),
- options => $mysql_member_options,
+ options => $mysql_member_options_real,
}
}
@@ -1195,8 +1296,8 @@ class tripleo::haproxy (
$opendaylight_api_vip = hiera('opendaylight_api_vip', $controller_virtual_ip)
$opendaylight_bind_opts = {
- "${opendaylight_api_vip}:8081" => [],
- "${public_virtual_ip}:8081" => [],
+ "${opendaylight_api_vip}:8081" => $haproxy_listen_bind_param,
+ "${public_virtual_ip}:8081" => $haproxy_listen_bind_param,
}
if $opendaylight {
diff --git a/manifests/keepalived.pp b/manifests/keepalived.pp
index c0fb3ef..0e9262d 100644
--- a/manifests/keepalived.pp
+++ b/manifests/keepalived.pp
@@ -158,5 +158,4 @@ class tripleo::keepalived (
priority => 101,
}
}
-
}
diff --git a/manifests/network/os_net_config.pp b/manifests/network/os_net_config.pp
index 7e07f6c..3283b5f 100644
--- a/manifests/network/os_net_config.pp
+++ b/manifests/network/os_net_config.pp
@@ -30,6 +30,17 @@ class tripleo::network::os_net_config {
Package['openvswitch'],
Service['openvswitch'],
],
+ notify => Exec['trigger-keepalived-restart'],
}
+ # By modifying the keepalived.conf file we ensure that puppet will
+ # trigger a restart of keepalived during the main stage. Adding back
+ # any lost conf during the os-net-config step.
+ exec { 'trigger-keepalived-restart':
+ command => '/usr/bin/echo "# Restart keepalived" >> /etc/keepalived/keepalived.conf',
+ path => '/usr/bin:/bin',
+ refreshonly => true,
+ # Only if keepalived is installed
+ onlyif => 'test -e /etc/keepalived/keepalived.conf',
+ }
}
diff --git a/manifests/profile/base/aodh.pp b/manifests/profile/base/aodh.pp
index 02c1d07..6e70b50 100644
--- a/manifests/profile/base/aodh.pp
+++ b/manifests/profile/base/aodh.pp
@@ -28,8 +28,8 @@
# Defaults to hiera('bootstrap_nodeid')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -38,7 +38,7 @@
class tripleo::profile::base::aodh (
$step = hiera('step'),
$bootstrap_node = hiera('bootstrap_nodeid', undef),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('aodh::rabbit_port', 5672),
) {
@@ -49,8 +49,9 @@ class tripleo::profile::base::aodh (
}
if $step >= 4 or ($step >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::aodh' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::aodh::auth
include ::aodh::config
diff --git a/manifests/profile/base/aodh/api.pp b/manifests/profile/base/aodh/api.pp
index 2dcf802..af4a5b3 100644
--- a/manifests/profile/base/aodh/api.pp
+++ b/manifests/profile/base/aodh/api.pp
@@ -18,32 +18,72 @@
#
# === Parameters
#
+# [*aodh_network*]
+# (Optional) The network name where the aodh endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('aodh_api_network', undef)
+#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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')
#
-# [*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,
+ $aodh_network = hiera('aodh_api_network', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $step = hiera('step'),
) {
include ::tripleo::profile::base::aodh
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$aodh_network {
+ fail('aodh_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${aodh_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${aodh_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
+
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;
+ class { '::aodh::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
}
}
}
diff --git a/manifests/profile/base/barbican.pp b/manifests/profile/base/barbican.pp
new file mode 100644
index 0000000..f4d6230
--- /dev/null
+++ b/manifests/profile/base/barbican.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::barbican
+#
+# Barbican 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::barbican (
+ $step = hiera('step'),
+) {
+
+ if $step >= 3 {
+ include ::barbican
+ include ::barbican::config
+ include ::barbican::client
+ }
+}
diff --git a/manifests/profile/base/barbican/api.pp b/manifests/profile/base/barbican/api.pp
new file mode 100644
index 0000000..b464317
--- /dev/null
+++ b/manifests/profile/base/barbican/api.pp
@@ -0,0 +1,107 @@
+# 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::barbican::api
+#
+# Barbican profile for tripleo api
+#
+# === Parameters
+#
+# [*barbican_network*]
+# (Optional) The network name where the barbican endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('barbican_api_network', undef)
+#
+# [*bootstrap_node*]
+# (Optional) The hostname of the node responsible for bootstrapping tasks
+# Defaults to hiera('bootstrap_nodeid')
+#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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::barbican::api (
+ $barbican_network = hiera('barbican_api_network', undef),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $step = hiera('step'),
+) {
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$barbican_network {
+ fail('barbican_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${barbican_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${barbican_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
+ include ::tripleo::profile::base::barbican
+
+ if $step >= 3 and $sync_db {
+ include ::barbican::db::mysql
+ }
+
+ if $step >= 4 or ( $step >= 3 and $sync_db ) {
+ class { '::barbican::api':
+ sync_db => $sync_db
+ }
+ include ::barbican::keystone::authtoken
+ include ::barbican::api::logging
+ include ::barbican::keystone::notification
+ include ::barbican::quota
+ class { '::barbican::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
+ }
+}
diff --git a/manifests/profile/base/ceilometer.pp b/manifests/profile/base/ceilometer.pp
index 959d86c..bbe7f27 100644
--- a/manifests/profile/base/ceilometer.pp
+++ b/manifests/profile/base/ceilometer.pp
@@ -24,8 +24,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -33,13 +33,14 @@
class tripleo::profile::base::ceilometer (
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('ceilometer::rabbit_port', 5672),
) {
if $step >= 3 {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::ceilometer' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::ceilometer::config
}
diff --git a/manifests/profile/base/ceilometer/api.pp b/manifests/profile/base/ceilometer/api.pp
index da94da2..6ef4748 100644
--- a/manifests/profile/base/ceilometer/api.pp
+++ b/manifests/profile/base/ceilometer/api.pp
@@ -18,18 +18,69 @@
#
# === Parameters
#
+# [*ceilometer_network*]
+# (Optional) The network name where the ceilometer endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('ceilometer_api_network', undef)
+#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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::ceilometer::api (
- $step = hiera('step'),
+ $ceilometer_network = hiera('ceilometer_api_network', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $step = hiera('step'),
) {
include ::tripleo::profile::base::ceilometer
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$ceilometer_network {
+ fail('ceilometer_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${ceilometer_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${ceilometer_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
if $step >= 4 {
include ::ceilometer::api
- include ::ceilometer::wsgi::apache
+ class { '::ceilometer::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
}
}
diff --git a/manifests/profile/base/ceilometer/collector.pp b/manifests/profile/base/ceilometer/collector.pp
index 3c0a361..20eab54 100644
--- a/manifests/profile/base/ceilometer/collector.pp
+++ b/manifests/profile/base/ceilometer/collector.pp
@@ -68,19 +68,8 @@ class tripleo::profile::base::ceilometer::collector (
if !$mongodb_replset {
fail('mongodb_replset is required when using 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($mongodb_ipv6) {
- $mongo_node_ips_with_port_prefixed = prefix($mongodb_node_ips, '[')
- $mongo_node_ips_with_port = suffix($mongo_node_ips_with_port_prefixed, ']:27017')
- $mongo_node_ips_with_port_nobr = suffix($mongodb_node_ips, ':27017')
- } else {
- $mongo_node_ips_with_port = suffix($mongodb_node_ips, ':27017')
- $mongo_node_ips_with_port_nobr = suffix($mongodb_node_ips, ':27017')
- }
- $mongo_node_string = join($mongo_node_ips_with_port, ',')
-
+ $mongo_nodes = suffix(any2array(normalize_ip_for_uri($mongodb_node_ips)), ':27017')
+ $mongo_node_string = join($mongo_nodes, ',')
$ceilometer_mongodb_conn_string = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
class { '::ceilometer::db' :
diff --git a/manifests/profile/base/ceph/rgw.pp b/manifests/profile/base/ceph/rgw.pp
index 7cd2b6a..2ecca52 100644
--- a/manifests/profile/base/ceph/rgw.pp
+++ b/manifests/profile/base/ceph/rgw.pp
@@ -18,6 +18,14 @@
#
# === Parameters
#
+# [*civetweb_bind_ip*]
+# IP address where to bind the RGW civetweb instance
+# (Optional) Defaults to 127.0.0.1
+#
+# [*civetweb_bind_port*]
+# PORT where to bind the RGW civetweb instance
+# (Optional) Defaults to 8080
+#
# [*keystone_admin_token*]
# The keystone admin token
#
@@ -36,14 +44,22 @@ class tripleo::profile::base::ceph::rgw (
$keystone_admin_token,
$keystone_url,
$rgw_key,
- $step = hiera('step'),
+ $civetweb_bind_ip = '127.0.0.1',
+ $civetweb_bind_port = '8080',
+ $step = hiera('step'),
) {
include ::tripleo::profile::base::ceph
if $step >= 3 {
- include ::ceph::profile::rgw
$rgw_name = hiera('ceph::profile::params::rgw_name', 'radosgw.gateway')
+ $civetweb_bind_ip_real = normalize_ip_for_uri($civetweb_bind_ip)
+ include ::ceph::params
+ include ::ceph::profile::base
+ ceph::rgw { $rgw_name:
+ frontend_type => 'civetweb',
+ rgw_frontends => "civetweb port=${civetweb_bind_ip_real}:${civetweb_bind_port}"
+ }
ceph::key { "client.${rgw_name}":
secret => $rgw_key,
cap_mon => 'allow *',
diff --git a/manifests/profile/base/cinder.pp b/manifests/profile/base/cinder.pp
index 9f7c453..6a821f3 100644
--- a/manifests/profile/base/cinder.pp
+++ b/manifests/profile/base/cinder.pp
@@ -31,8 +31,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -42,7 +42,7 @@ class tripleo::profile::base::cinder (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$cinder_enable_db_purge = true,
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('cinder::rabbit_port', 5672),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -52,8 +52,9 @@ class tripleo::profile::base::cinder (
}
if $step >= 4 or ($step >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::cinder' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::cinder::config
}
diff --git a/manifests/profile/base/cinder/api.pp b/manifests/profile/base/cinder/api.pp
index 31635eb..5ea2058 100644
--- a/manifests/profile/base/cinder/api.pp
+++ b/manifests/profile/base/cinder/api.pp
@@ -22,14 +22,47 @@
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*cinder_api_network*]
+# (Optional) The network name where the cinder API endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('cinder_api_network', undef)
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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::cinder::api (
- $bootstrap_node = hiera('bootstrap_nodeid', undef),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $cinder_api_network = hiera('cinder_api_network', undef),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $step = hiera('step'),
) {
if $::hostname == downcase($bootstrap_node) {
$sync_db = true
@@ -39,8 +72,27 @@ class tripleo::profile::base::cinder::api (
include ::tripleo::profile::base::cinder
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$cinder_api_network {
+ fail('cinder_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${cinder_api_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${cinder_api_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
if $step >= 4 or ($step >= 3 and $sync_db) {
include ::cinder::api
+ class { '::cinder::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
include ::cinder::ceilometer
include ::cinder::glance
}
diff --git a/manifests/profile/base/database/mysql.pp b/manifests/profile/base/database/mysql.pp
index 9da1456..e5f366e 100644
--- a/manifests/profile/base/database/mysql.pp
+++ b/manifests/profile/base/database/mysql.pp
@@ -26,6 +26,28 @@
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
+# [*certificate_specs*]
+# (Optional) The specifications to give to certmonger for the certificate
+# it will create. Note that the certificate nickname must be 'mysql' in
+# the case of this service.
+# Example with hiera:
+# tripleo::profile::base::database::mysql::certificate_specs:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "mysql/<overcloud controller fqdn>"
+# Defaults to {}.
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*generate_service_certificates*]
+# (Optional) Whether or not certmonger will generate certificates for
+# MySQL. This could be as many as specified by the $certificates_specs
+# variable.
+# Defaults to hiera('generate_service_certificate', false).
+#
# [*manage_resources*]
# (Optional) Whether or not manage root user, root my.cnf, and service.
# Defaults to true
@@ -45,12 +67,15 @@
# Defaults to hiera('step')
#
class tripleo::profile::base::database::mysql (
- $bind_address = $::hostname,
- $bootstrap_node = hiera('bootstrap_nodeid', undef),
- $manage_resources = true,
- $mysql_server_options = {},
- $remove_default_accounts = true,
- $step = hiera('step'),
+ $bind_address = $::hostname,
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $certificate_specs = {},
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $manage_resources = true,
+ $mysql_server_options = {},
+ $remove_default_accounts = true,
+ $step = hiera('step'),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -60,6 +85,18 @@ class tripleo::profile::base::database::mysql (
}
validate_hash($mysql_server_options)
+ validate_hash($certificate_specs)
+
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resource('class', 'tripleo::certmonger::mysql', $certificate_specs)
+ }
+ $tls_certfile = $certificate_specs['service_certificate']
+ $tls_keyfile = $certificate_specs['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
# non-ha scenario
if $manage_resources {
@@ -84,6 +121,10 @@ class tripleo::profile::base::database::mysql (
'bind-address' => $bind_address,
'max_connections' => hiera('mysql_max_connections'),
'open_files_limit' => '-1',
+ 'ssl' => $enable_internal_tls,
+ 'ssl-key' => $tls_keyfile,
+ 'ssl-cert' => $tls_certfile,
+ 'ssl-ca' => undef,
}
}
$mysql_server_options_real = deep_merge($mysql_server_default, $mysql_server_options)
@@ -143,6 +184,9 @@ class tripleo::profile::base::database::mysql (
if hiera('trove_api_enabled', false) {
include ::trove::db::mysql
}
+ if hiera('panko_api_enabled', false) {
+ include ::panko::db::mysql
+ }
}
}
diff --git a/manifests/profile/base/glance/api.pp b/manifests/profile/base/glance/api.pp
index f3db396..5ba7a0b 100644
--- a/manifests/profile/base/glance/api.pp
+++ b/manifests/profile/base/glance/api.pp
@@ -22,26 +22,35 @@
# (Optional) Glance backend(s) to use.
# Defaults to downcase(hiera('glance_backend', 'swift'))
#
+# [*glance_nfs_enabled*]
+# (Optional) Whether to use NFS mount as 'file' backend storage location.
+# Defaults to false
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
# Defaults to hiera('glance::notify::rabbitmq::rabbit_port', 5672)
class tripleo::profile::base::glance::api (
- $glance_backend = downcase(hiera('glance_backend', 'swift')),
- $step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
- $rabbit_port = hiera('glance::notify::rabbitmq::rabbit_port', 5672),
+ $glance_backend = downcase(hiera('glance_backend', 'swift')),
+ $glance_nfs_enabled = false,
+ $step = hiera('step'),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
+ $rabbit_port = hiera('glance::notify::rabbitmq::rabbit_port', 5672),
) {
+ if $step >= 1 and $glance_nfs_enabled {
+ include ::tripleo::glance::nfs_mount
+ }
+
if $step >= 4 {
case $glance_backend {
'swift': { $backend_store = 'glance.store.swift.Store' }
@@ -58,9 +67,9 @@ class tripleo::profile::base::glance::api (
class { '::glance::api':
stores => $glance_store,
}
-
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::glance::notify::rabbitmq' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include join(['::glance::backend::', $glance_backend])
}
diff --git a/manifests/profile/base/gnocchi/api.pp b/manifests/profile/base/gnocchi/api.pp
index 9a08551..2fde1fc 100644
--- a/manifests/profile/base/gnocchi/api.pp
+++ b/manifests/profile/base/gnocchi/api.pp
@@ -22,19 +22,52 @@
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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).
+#
# [*gnocchi_backend*]
# (Optional) Gnocchi backend string file, swift or rbd
# Defaults to swift
#
+# [*gnocchi_network*]
+# (Optional) The network name where the gnocchi endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('gnocchi_api_network', undef)
+#
# [*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'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift')),
+ $gnocchi_network = hiera('gnocchi_api_network', undef),
+ $step = hiera('step'),
) {
if $::hostname == downcase($bootstrap_node) {
$sync_db = true
@@ -44,13 +77,31 @@ class tripleo::profile::base::gnocchi::api (
include ::tripleo::profile::base::gnocchi
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$gnocchi_network {
+ fail('gnocchi_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${gnocchi_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${gnocchi_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
if $step >= 3 and $sync_db {
include ::gnocchi::db::sync
}
if $step >= 4 {
include ::gnocchi::api
- include ::gnocchi::wsgi::apache
+ class { '::gnocchi::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
class { '::gnocchi::storage':
coordination_url => join(['redis://:', hiera('gnocchi_redis_password'), '@', normalize_ip_for_uri(hiera('redis_vip')), ':6379/']),
diff --git a/manifests/profile/base/haproxy.pp b/manifests/profile/base/haproxy.pp
index afeb8c0..f16ec1b 100644
--- a/manifests/profile/base/haproxy.pp
+++ b/manifests/profile/base/haproxy.pp
@@ -95,7 +95,7 @@ class tripleo::profile::base::haproxy (
command => 'systemctl reload haproxy',
path => ['/usr/bin', '/usr/sbin'],
refreshonly => true,
- onlyif => 'pcs property | grep -q "maintenance-mode.*true"',
+ onlyif => 'systemctl is-active haproxy | grep -q active',
subscribe => Class['::haproxy']
}
Haproxy::Listen<||> ~> Exec['haproxy-reload']
diff --git a/manifests/profile/base/heat.pp b/manifests/profile/base/heat.pp
index abb9f76..c743ce0 100644
--- a/manifests/profile/base/heat.pp
+++ b/manifests/profile/base/heat.pp
@@ -36,8 +36,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -48,12 +48,12 @@ class tripleo::profile::base::heat (
$manage_db_purge = hiera('heat_enable_db_purge', true),
$notification_driver = 'messaging',
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('heat::rabbit_port', 5672),
) {
# Domain resources will be created at step5 on the node running keystone.pp
# configure heat.conf at step3 and 4 but actually create the domain later.
- if $step == 3 or $step == 4 {
+ if $step >= 3 {
class { '::heat::keystone::domain':
manage_domain => false,
manage_user => false,
@@ -62,9 +62,10 @@ class tripleo::profile::base::heat (
}
if $step >= 4 {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::heat' :
notification_driver => $notification_driver,
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::heat::config
include ::heat::cors
diff --git a/manifests/profile/base/ironic.pp b/manifests/profile/base/ironic.pp
index e63e4c6..5db1e1f 100644
--- a/manifests/profile/base/ironic.pp
+++ b/manifests/profile/base/ironic.pp
@@ -27,8 +27,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -37,7 +37,7 @@
class tripleo::profile::base::ironic (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('ironic::rabbit_port', 5672),
) {
# Database is accessed by both API and conductor, hence it's here.
@@ -48,9 +48,10 @@ class tripleo::profile::base::ironic (
}
if $step >= 4 or ($step >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::ironic':
sync_db => $sync_db,
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::ironic::cors
diff --git a/manifests/profile/base/keepalived.pp b/manifests/profile/base/keepalived.pp
index f2063d6..8dd03dc 100644
--- a/manifests/profile/base/keepalived.pp
+++ b/manifests/profile/base/keepalived.pp
@@ -27,13 +27,54 @@
# for more details.
# Defaults to hiera('step')
#
+# [*control_virtual_interface*]
+# (Optional) Interface specified for control plane network
+# Defaults to hiera('tripleo::keepalived::control_virtual_interface', false)
+#
+# [*control_virtual_ip*]
+# Virtual IP address used for control plane network
+# Defaults to hiera('tripleo::keepalived::controller_virtual_ip')
+#
+# [*public_virtual_interface*]
+# (Optional) Interface specified for public/external network
+# Defaults to hiera('tripleo::keepalived::public_virtual_interface', false)
+#
+# [*public_virtual_ip*]
+# Virtual IP address used for public/ network
+# Defaults to hiera('tripleo::keepalived::public_virtual_ip')
+#
class tripleo::profile::base::keepalived (
- $enable_load_balancer = hiera('enable_load_balancer', true),
- $step = hiera('step'),
+ $enable_load_balancer = hiera('enable_load_balancer', true),
+ $control_virtual_interface = hiera('tripleo::keepalived::control_virtual_interface', false),
+ $control_virtual_ip = hiera('tripleo::keepalived::controller_virtual_ip'),
+ $public_virtual_interface = hiera('tripleo::keepalived::public_virtual_interface', false),
+ $public_virtual_ip = hiera('tripleo::keepalived::public_virtual_ip'),
+ $step = hiera('step'),
) {
if $step >= 1 {
if $enable_load_balancer and hiera('enable_keepalived', true){
- include ::tripleo::keepalived
+ if ! $control_virtual_interface {
+ $control_detected_interface = interface_for_ip($control_virtual_ip)
+ if ! $control_detected_interface {
+ fail('Unable to find interface for control plane network')
+ }
+ } else {
+ $control_detected_interface = $control_virtual_interface
+ }
+
+ if ! $public_virtual_interface {
+ $public_detected_interface = interface_for_ip($public_virtual_ip)
+ if ! $public_detected_interface {
+ fail('Unable to find interface for public network')
+ }
+ } else {
+ $public_detected_interface = $public_virtual_interface
+ }
+
+ class { '::tripleo::keepalived':
+ control_virtual_interface => $control_detected_interface,
+ public_virtual_interface => $public_detected_interface,
+ }
}
}
}
diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp
index 8a70110..26e7b1f 100644
--- a/manifests/profile/base/keystone.pp
+++ b/manifests/profile/base/keystone.pp
@@ -51,6 +51,22 @@
# creates the certificates.
# Defaults to hiera('generate_service_certificate', false).
#
+# [*heat_admin_domain*]
+# domain name for heat admin
+# Defaults to undef
+#
+# [*heat_admin_email*]
+# heat admin email address
+# Defaults to undef
+#
+# [*heat_admin_password*]
+# heat admin password
+# Defaults to undef
+#
+# [*heat_admin_user*]
+# heat admin user name
+# Defaults to undef
+#
# [*manage_db_purge*]
# (Optional) Whether keystone token flushing should be enabled
# Defaults to hiera('keystone_enable_db_purge', true)
@@ -62,8 +78,8 @@
#
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -80,9 +96,13 @@ class tripleo::profile::base::keystone (
$certificates_specs = hiera('apache_certificates_specs', {}),
$enable_internal_tls = hiera('enable_internal_tls', false),
$generate_service_certificates = hiera('generate_service_certificates', false),
+ $heat_admin_domain = undef,
+ $heat_admin_email = undef,
+ $heat_admin_password = undef,
+ $heat_admin_user = undef,
$manage_db_purge = hiera('keystone_enable_db_purge', true),
$public_endpoint_network = hiera('keystone_public_api_network', undef),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('keystone::rabbit_port', 5672),
$step = hiera('step'),
) {
@@ -122,10 +142,11 @@ class tripleo::profile::base::keystone (
}
if $step >= 4 or ( $step >= 3 and $sync_db ) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::keystone':
sync_db => $sync_db,
enable_bootstrap => $sync_db,
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::keystone::config
@@ -153,22 +174,22 @@ class tripleo::profile::base::keystone (
if $step >= 5 and $manage_domain {
if hiera('heat_engine_enabled', false) {
- # if Heat and Keystone are collocated, so we want to
- # both configure heat.conf and create Keystone resources.
- # note: domain_password is given via Hiera.
- if defined(Class['::tripleo::profile::base::heat']) {
- include ::heat::keystone::domain
- } else {
- # if Heat and Keystone are not collocated, we want Puppet
- # to only create Keystone resources on the Keystone node
- # but not try to configure Heat, to avoid leaking the password.
- class { '::heat::keystone::domain':
- domain_name => $::os_service_default,
- domain_admin => $::os_service_default,
- domain_password => $::os_service_default,
- }
+ # create these seperate and don't use ::heat::keystone::domain since
+ # that class writes out the configs
+ keystone_domain { $heat_admin_domain:
+ ensure => 'present',
+ enabled => true
+ }
+ keystone_user { "${heat_admin_user}::${heat_admin_domain}":
+ ensure => 'present',
+ enabled => true,
+ email => $heat_admin_email,
+ password => $heat_admin_password
+ }
+ keystone_user_role { "${heat_admin_user}::${heat_admin_domain}@::${heat_admin_domain}":
+ roles => ['admin'],
+ require => Class['::keystone::roles::admin']
}
- Class['::keystone::roles::admin'] -> Class['::heat::keystone::domain']
}
}
@@ -176,6 +197,9 @@ class tripleo::profile::base::keystone (
if hiera('aodh_api_enabled', false) {
include ::aodh::keystone::auth
}
+ if hiera('barbican_api_enabled', false) {
+ include ::barbican::keystone::auth
+ }
if hiera('ceilometer_api_enabled', false) {
include ::ceilometer::keystone::auth
}
@@ -212,6 +236,9 @@ class tripleo::profile::base::keystone (
if hiera('nova_api_enabled', false) {
include ::nova::keystone::auth
}
+ if hiera('panko_api_enabled', false) {
+ include ::panko::keystone::auth
+ }
if hiera('sahara_api_enabled', false) {
include ::sahara::keystone::auth
}
diff --git a/manifests/profile/base/manila.pp b/manifests/profile/base/manila.pp
index 393dd52..f021f64 100644
--- a/manifests/profile/base/manila.pp
+++ b/manifests/profile/base/manila.pp
@@ -27,8 +27,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -37,7 +37,7 @@
class tripleo::profile::base::manila (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('manila::rabbit_port', 5672),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -47,8 +47,9 @@ class tripleo::profile::base::manila (
}
if $step >= 4 or ($step >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::manila' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::manila::config
}
diff --git a/manifests/profile/base/mistral.pp b/manifests/profile/base/mistral.pp
index dcd9d0b..d8e1330 100644
--- a/manifests/profile/base/mistral.pp
+++ b/manifests/profile/base/mistral.pp
@@ -28,8 +28,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -38,7 +38,7 @@
class tripleo::profile::base::mistral (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('mistral::rabbit_port', 5672),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -48,8 +48,9 @@ class tripleo::profile::base::mistral (
}
if $step >= 4 or ($step >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::mistral':
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::mistral::config
include ::mistral::client
diff --git a/manifests/profile/base/neutron.pp b/manifests/profile/base/neutron.pp
index 53df3d9..e6a32db 100644
--- a/manifests/profile/base/neutron.pp
+++ b/manifests/profile/base/neutron.pp
@@ -23,8 +23,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -32,12 +32,13 @@
class tripleo::profile::base::neutron (
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('neutron::rabbit_port', 5672),
) {
if $step >= 3 {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::neutron' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::neutron::config
}
diff --git a/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp b/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp
index 2eb09ae..c120931 100644
--- a/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp
+++ b/manifests/profile/base/neutron/plugins/ml2/opendaylight.pp
@@ -53,9 +53,9 @@ class tripleo::profile::base::neutron::plugins::ml2::opendaylight (
if ! $odl_url_ip { fail('OpenDaylight Controller IP/VIP is Empty') }
class { '::neutron::plugins::ml2::opendaylight':
- odl_username => $odl_username,
- odl_password => $odl_password,
- odl_url => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron";
+ odl_username => $odl_username,
+ odl_password => $odl_password,
+ odl_url => "${conn_proto}://${odl_url_ip}:${odl_port}/controller/nb/v2/neutron";
}
}
}
diff --git a/manifests/profile/base/neutron/server.pp b/manifests/profile/base/neutron/server.pp
index 82c2d5f..4667ae2 100644
--- a/manifests/profile/base/neutron/server.pp
+++ b/manifests/profile/base/neutron/server.pp
@@ -27,9 +27,30 @@
# for more details.
# Defaults to hiera('step')
#
+# [*l3_ha_override*]
+# (Optional) Override the calculated value for neutron::server::l3_ha
+# by default this is calculated to enable when DVR is not enabled
+# and the number of nodes running neutron api is more than one.
+# Defaults to '' which aligns with the t-h-t default, and means use
+# the calculated value. Other possible values are 'true' or 'false'
+#
+# [*l3_nodes*]
+# (Optional) List of nodes running the l3 agent, used when no override
+# is passed to l3_ha_override to calculate enabling l3 HA.
+# Defaults to hiera('neutron_l3_short_node_names') or []
+# (we need to default neutron_l3_short_node_names to an empty list
+# because some neutron backends disable the l3 agent)
+#
+# [*dvr_enabled*]
+# (Optional) Is dvr enabled, used when no override is passed to
+# l3_ha_override to calculate enabling l3 HA.
+# Defaults to hiera('neutron::server::router_distributed') or false
class tripleo::profile::base::neutron::server (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
+ $l3_ha_override = '',
+ $l3_nodes = hiera('neutron_l3_short_node_names', []),
+ $dvr_enabled = hiera('neutron::server::router_distributed', false)
) {
if $::hostname == downcase($bootstrap_node) {
$sync_db = true
@@ -39,6 +60,16 @@ class tripleo::profile::base::neutron::server (
include ::tripleo::profile::base::neutron
+ # Calculate neutron::server::l3_ha based on the number of API nodes
+ # combined with if DVR is enabled.
+ if $l3_ha_override != '' {
+ $l3_ha = str2bool($l3_ha_override)
+ } elsif ! str2bool($dvr_enabled) {
+ $l3_ha = size($l3_nodes) > 1
+ } else {
+ $l3_ha = false
+ }
+
# 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
@@ -48,12 +79,14 @@ class tripleo::profile::base::neutron::server (
# to true
class { '::neutron::server':
sync_db => $sync_db,
+ l3_ha => $l3_ha,
}
}
if $step >= 5 and !$sync_db {
include ::neutron::server::notifications
class { '::neutron::server':
sync_db => $sync_db,
+ l3_ha => $l3_ha,
}
}
}
diff --git a/manifests/profile/base/nova.pp b/manifests/profile/base/nova.pp
index b397802..7f1c862 100644
--- a/manifests/profile/base/nova.pp
+++ b/manifests/profile/base/nova.pp
@@ -39,8 +39,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -52,7 +52,7 @@ class tripleo::profile::base::nova (
$manage_migration = false,
$nova_compute_enabled = false,
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('nova::rabbit_port', 5672),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -68,8 +68,9 @@ class tripleo::profile::base::nova (
}
if hiera('step') >= 4 or (hiera('step') >= 3 and $sync_db) {
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::nova' :
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
include ::nova::config
class { '::nova::cache':
diff --git a/manifests/profile/base/nova/api.pp b/manifests/profile/base/nova/api.pp
index ca2f7dd..e660990 100644
--- a/manifests/profile/base/nova/api.pp
+++ b/manifests/profile/base/nova/api.pp
@@ -20,14 +20,47 @@
# (Optional) The hostname of the node responsible for bootstrapping tasks
# Defaults to hiera('bootstrap_nodeid')
#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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).
+#
+# [*nova_api_network*]
+# (Optional) The network name where the nova API endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('nova_api_network', undef)
+#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
# for more details.
# Defaults to hiera('step')
#
class tripleo::profile::base::nova::api (
- $bootstrap_node = hiera('bootstrap_nodeid', undef),
- $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $nova_api_network = hiera('nova_api_network', undef),
+ $step = hiera('step'),
) {
if $::hostname == downcase($bootstrap_node) {
$sync_db = true
@@ -37,6 +70,21 @@ class tripleo::profile::base::nova::api (
include ::tripleo::profile::base::nova
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$nova_api_network {
+ fail('nova_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${nova_api_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${nova_api_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
if $step >= 4 or ($step >= 3 and $sync_db) {
if hiera('nova::use_ipv6', false) {
@@ -53,7 +101,10 @@ class tripleo::profile::base::nova::api (
sync_db => $sync_db,
sync_db_api => $sync_db,
}
- include ::nova::wsgi::apache
+ class { '::nova::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
include ::nova::network::neutron
}
diff --git a/manifests/profile/base/panko.pp b/manifests/profile/base/panko.pp
new file mode 100644
index 0000000..4abed56
--- /dev/null
+++ b/manifests/profile/base/panko.pp
@@ -0,0 +1,47 @@
+# 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::panko
+#
+# panko 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::panko (
+ $step = hiera('step'),
+ $bootstrap_node = hiera('bootstrap_nodeid', undef),
+) {
+
+ if $::hostname == downcase($bootstrap_node) {
+ $sync_db = true
+ } else {
+ $sync_db = false
+ }
+
+ if $step >= 4 or ($step >= 3 and $sync_db) {
+ include ::panko
+ include ::panko::config
+ include ::panko::db::sync
+ }
+
+}
diff --git a/manifests/profile/base/panko/api.pp b/manifests/profile/base/panko/api.pp
new file mode 100644
index 0000000..45ee0c0
--- /dev/null
+++ b/manifests/profile/base/panko/api.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::panko::api
+#
+# Panko API profile for tripleo
+#
+# === Parameters
+#
+# [*certificates_specs*]
+# (Optional) The specifications to give to certmonger for the certificate(s)
+# it will create.
+# Example with hiera:
+# apache_certificates_specs:
+# httpd-internal_api:
+# hostname: <overcloud controller fqdn>
+# service_certificate: <service certificate path>
+# service_key: <service key path>
+# principal: "haproxy/<overcloud controller fqdn>"
+# Defaults to hiera('apache_certificate_specs', {}).
+#
+# [*enable_internal_tls*]
+# (Optional) Whether TLS in the internal network is enabled or not.
+# Defaults to hiera('enable_internal_tls', false)
+#
+# [*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).
+#
+# [*panko_network*]
+# (Optional) The network name where the panko endpoint is listening on.
+# This is set by t-h-t.
+# Defaults to hiera('panko_api_network', undef)
+#
+# [*step*]
+# (Optional) The current step in deployment. See tripleo-heat-templates
+# for more details.
+# Defaults to hiera('step')
+#
+class tripleo::profile::base::panko::api (
+ $certificates_specs = hiera('apache_certificates_specs', {}),
+ $enable_internal_tls = hiera('enable_internal_tls', false),
+ $generate_service_certificates = hiera('generate_service_certificates', false),
+ $panko_network = hiera('panko_api_network', undef),
+ $step = hiera('step'),
+) {
+ include ::tripleo::profile::base::panko
+
+ if $enable_internal_tls {
+ if $generate_service_certificates {
+ ensure_resources('tripleo::certmonger::httpd', $certificates_specs)
+ }
+
+ if !$panko_network {
+ fail('panko_api_network is not set in the hieradata.')
+ }
+ $tls_certfile = $certificates_specs["httpd-${panko_network}"]['service_certificate']
+ $tls_keyfile = $certificates_specs["httpd-${panko_network}"]['service_key']
+ } else {
+ $tls_certfile = undef
+ $tls_keyfile = undef
+ }
+
+ if $step >= 4 {
+ include ::panko::api
+ class { '::panko::wsgi::apache':
+ ssl_cert => $tls_certfile,
+ ssl_key => $tls_keyfile,
+ }
+ }
+}
diff --git a/manifests/profile/base/rabbitmq.pp b/manifests/profile/base/rabbitmq.pp
index b521999..15bab44 100644
--- a/manifests/profile/base/rabbitmq.pp
+++ b/manifests/profile/base/rabbitmq.pp
@@ -36,7 +36,7 @@
#
# [*nodes*]
# (Optional) Array of host(s) for RabbitMQ nodes.
-# Defaults to hiera('rabbitmq_node_ips', []).
+# Defaults to hiera('rabbitmq_node_names', []).
#
# [*step*]
# (Optional) The current step in deployment. See tripleo-heat-templates
@@ -48,7 +48,7 @@ class tripleo::profile::base::rabbitmq (
$environment = hiera('rabbitmq_environment'),
$ipv6 = str2bool(hiera('rabbit_ipv6', false)),
$kernel_variables = hiera('rabbitmq_kernel_variables'),
- $nodes = hiera('rabbitmq_node_ips', []),
+ $nodes = hiera('rabbitmq_node_names', []),
$step = hiera('step'),
) {
# IPv6 environment, necessary for RabbitMQ.
@@ -68,7 +68,6 @@ class tripleo::profile::base::rabbitmq (
class { '::rabbitmq':
config_cluster => $manage_service,
cluster_nodes => $nodes,
- tcp_keepalive => false,
config_kernel_variables => $kernel_variables,
config_variables => $config_variables,
environment_variables => $rabbit_env,
@@ -85,7 +84,6 @@ class tripleo::profile::base::rabbitmq (
} else {
# Standard configuration
class { '::rabbitmq':
- tcp_keepalive => false,
config_kernel_variables => $kernel_variables,
config_variables => $config_variables,
environment_variables => $rabbit_env,
diff --git a/manifests/profile/base/sahara.pp b/manifests/profile/base/sahara.pp
index c034628..8db071b 100644
--- a/manifests/profile/base/sahara.pp
+++ b/manifests/profile/base/sahara.pp
@@ -27,8 +27,8 @@
# Defaults to hiera('step')
#
# [*rabbit_hosts*]
-# list of the rabbbit host IPs
-# Defaults to hiera('rabbitmq_node_ips')
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
#
# [*rabbit_port*]
# IP port for rabbitmq service
@@ -37,7 +37,7 @@
class tripleo::profile::base::sahara (
$bootstrap_node = hiera('bootstrap_nodeid', undef),
$step = hiera('step'),
- $rabbit_hosts = hiera('rabbitmq_node_ips', undef),
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
$rabbit_port = hiera('sahara::rabbit_port', 5672),
) {
if $::hostname == downcase($bootstrap_node) {
@@ -47,9 +47,10 @@ class tripleo::profile::base::sahara (
}
if $step >= 4 or ($step >= 3 and $sync_db){
+ $rabbit_endpoints = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
class { '::sahara':
sync_db => $sync_db,
- rabbit_hosts => suffix($rabbit_hosts, ":${rabbit_port}")
+ rabbit_hosts => $rabbit_endpoints,
}
}
}
diff --git a/manifests/profile/base/swift/proxy.pp b/manifests/profile/base/swift/proxy.pp
index feabf86..974a725 100644
--- a/manifests/profile/base/swift/proxy.pp
+++ b/manifests/profile/base/swift/proxy.pp
@@ -31,10 +31,20 @@
# (Optional) memcache port
# Defaults to 11211
#
+# [*rabbit_hosts*]
+# list of the rabbbit host fqdns
+# Defaults to hiera('rabbitmq_node_names')
+#
+# [*rabbit_port*]
+# IP port for rabbitmq service
+# Defaults to hiera('swift::proxy::ceilometer::rabbit_port', 5672)
+#
class tripleo::profile::base::swift::proxy (
- $step = hiera('step'),
+ $step = hiera('step'),
$memcache_servers = hiera('memcached_node_ips'),
- $memcache_port = 11211,
+ $memcache_port = 11211,
+ $rabbit_hosts = hiera('rabbitmq_node_names', undef),
+ $rabbit_port = hiera('swift::proxy::ceilometer::rabbit_port', 5672),
) {
if $step >= 4 {
$swift_memcache_servers = suffix(any2array(normalize_ip_for_uri($memcache_servers)), ":${memcache_port}")
@@ -53,7 +63,15 @@ class tripleo::profile::base::swift::proxy (
include ::swift::proxy::tempurl
include ::swift::proxy::formpost
include ::swift::proxy::bulk
- include ::swift::proxy::ceilometer
+ $swift_rabbit_hosts = suffix(any2array($rabbit_hosts), ":${rabbit_port}")
+ class { '::swift::proxy::ceilometer':
+ rabbit_hosts => $swift_rabbit_hosts,
+ }
include ::swift::proxy::versioned_writes
+ include ::swift::proxy::slo
+ include ::swift::proxy::dlo
+ include ::swift::proxy::copy
+ include ::swift::proxy::container_quotas
+ include ::swift::proxy::account_quotas
}
}
diff --git a/manifests/profile/base/zaqar.pp b/manifests/profile/base/zaqar.pp
index 6794742..89a03ad 100644
--- a/manifests/profile/base/zaqar.pp
+++ b/manifests/profile/base/zaqar.pp
@@ -32,8 +32,23 @@ class tripleo::profile::base::zaqar (
) {
if $step >= 4 {
include ::zaqar
- include ::zaqar::management::mongodb
- include ::zaqar::messaging::mongodb
+
+ 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')
+ } else {
+ $mongo_node_ips_with_port = suffix(hiera('mongodb_node_ips'), ':27017')
+ }
+ $mongodb_replset = hiera('mongodb::server::replset')
+ $mongo_node_string = join($mongo_node_ips_with_port, ',')
+ $database_connection = "mongodb://${mongo_node_string}/zaqar?replicaSet=${mongodb_replset}"
+
+ class { '::zaqar::management::mongodb':
+ uri => $database_connection,
+ }
+ class {'::zaqar::messaging::mongodb':
+ uri => $database_connection,
+ }
include ::zaqar::transport::websocket
include ::zaqar::transport::wsgi
diff --git a/manifests/profile/pacemaker/database/mysql.pp b/manifests/profile/pacemaker/database/mysql.pp
index a353e5f..edd09bd 100644
--- a/manifests/profile/pacemaker/database/mysql.pp
+++ b/manifests/profile/pacemaker/database/mysql.pp
@@ -146,9 +146,10 @@ class tripleo::profile::pacemaker::database::mysql (
user => 'clustercheck@localhost',
}
- # We create databases for services at step 2 as well. This ensures
+ # We create databases and users for services at step 2 as well. This ensures
# Galara is up before those get created
Exec['galera-ready'] -> Mysql_database<||>
+ Exec['galera-ready'] -> Mysql_user<||>
}
# This step is to create a sysconfig clustercheck file with the root user and empty password
diff --git a/manifests/profile/pacemaker/database/redis.pp b/manifests/profile/pacemaker/database/redis.pp
index 261df30..37c36aa 100644
--- a/manifests/profile/pacemaker/database/redis.pp
+++ b/manifests/profile/pacemaker/database/redis.pp
@@ -31,10 +31,16 @@
# for more details.
# Defaults to hiera('step')
#
+# [*redis_file_limit*]
+# (Optional) The file limit to put in /etc/security/limits.d/redis.conf
+# for when redis is managed by pacemaker. Defaults to hiera('redis_file_limit')
+# or 10240 (default in redis systemd limits)
+#
class tripleo::profile::pacemaker::database::redis (
$bootstrap_node = hiera('bootstrap_nodeid'),
$enable_load_balancer = hiera('enable_load_balancer', true),
$step = hiera('step'),
+ $redis_file_limit = hiera('redis_file_limit', 10240),
) {
if $::hostname == downcase($bootstrap_node) {
$pacemaker_master = true
@@ -44,6 +50,17 @@ class tripleo::profile::pacemaker::database::redis (
if $step >= 1 {
include ::redis
+ # Until puppet-redis grows support for /etc/security/limits.conf/redis.conf
+ # https://github.com/arioch/puppet-redis/issues/130
+ # we best explicitely set the file limit only in the pacemaker profile
+ # (the base profile does not need it as it is using systemd which has
+ # the limits set there)
+ file { '/etc/security/limits.d/redis.conf':
+ content => inline_template("redis soft nofile <%= @redis_file_limit %>\nredis hard nofile <%= @redis_file_limit %>\n"),
+ owner => '0',
+ group => '0',
+ mode => '0644',
+ }
if $pacemaker_master and hiera('stack_action') == 'UPDATE' {
tripleo::pacemaker::resource_restart_flag { 'redis-master':
diff --git a/manifests/profile/pacemaker/haproxy.pp b/manifests/profile/pacemaker/haproxy.pp
index 21d8ab1..605bb15 100644
--- a/manifests/profile/pacemaker/haproxy.pp
+++ b/manifests/profile/pacemaker/haproxy.pp
@@ -44,7 +44,7 @@ class tripleo::profile::pacemaker::haproxy (
$pacemaker_master = false
}
- if $step >= 1 and $pacemaker_master and hiera('stack_action') == 'UPDATE' {
+ if $step >= 1 and $pacemaker_master and hiera('stack_action') == 'UPDATE' and $enable_load_balancer {
tripleo::pacemaker::resource_restart_flag { 'haproxy-clone':
subscribe => Concat['/etc/haproxy/haproxy.cfg'],
}
diff --git a/manifests/ui.pp b/manifests/ui.pp
index 41ad8d6..27e3e50 100644
--- a/manifests/ui.pp
+++ b/manifests/ui.pp
@@ -25,7 +25,7 @@
#
# [*bind_host*]
# The host/ip address Apache will listen on.
-# Optional. Defaults to undef (listen on all ip addresses).
+# Optional. Defaults to hiera('controller_host')
#
# [*ui_port*]
# The port on which the UI is listening.
diff --git a/metadata.json b/metadata.json
index 1b135bd..a417f95 100644
--- a/metadata.json
+++ b/metadata.json
@@ -1,6 +1,6 @@
{
"name": "openstack-tripleo",
- "version": "5.3.0",
+ "version": "6.0.0",
"author": "OpenStack Contributors",
"summary": "Puppet module for TripleO",
"license": "Apache-2.0",
diff --git a/releasenotes/notes/sriov_numvfs-40564db9e1be589b.yaml b/releasenotes/notes/sriov_numvfs-40564db9e1be589b.yaml
index 85cbdec..5bcb588 100644
--- a/releasenotes/notes/sriov_numvfs-40564db9e1be589b.yaml
+++ b/releasenotes/notes/sriov_numvfs-40564db9e1be589b.yaml
@@ -1,4 +1,4 @@
---
features:
- Added a provider to configure VFs for SR-IOV interface.
- Added a define for persistence of the VFs configuratin.
+ - Added a define for persistence of the VFs configuration.
diff --git a/spec/classes/tripleo_firewall_spec.rb b/spec/classes/tripleo_firewall_spec.rb
index 1270aa7..3116a51 100644
--- a/spec/classes/tripleo_firewall_spec.rb
+++ b/spec/classes/tripleo_firewall_spec.rb
@@ -76,7 +76,8 @@ describe 'tripleo::firewall' do
'301 add custom application 2' => {'port' => '8081', 'proto' => 'tcp', 'action' => 'accept'},
'302 fwd custom cidr 1' => {'chain' => 'FORWARD', 'destination' => '192.0.2.0/24'},
'303 add custom application 3' => {'dport' => '8081', 'proto' => 'tcp', 'action' => 'accept'},
- '304 add custom application 4' => {'sport' => '1000', 'proto' => 'tcp', 'action' => 'accept'}
+ '304 add custom application 4' => {'sport' => '1000', 'proto' => 'tcp', 'action' => 'accept'},
+ '305 add gre rule' => {'proto' => 'gre'}
}
)
end
@@ -109,6 +110,7 @@ describe 'tripleo::firewall' do
:action => 'accept',
:state => ['NEW'],
)
+ is_expected.to contain_firewall('305 add gre rule').without(:state)
end
end
diff --git a/spec/classes/tripleo_profile_base_aodh_api_spec.rb b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
index d1f0b6b..22f26cf 100644
--- a/spec/classes/tripleo_profile_base_aodh_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_api_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::api' do
shared_examples_for 'tripleo::profile::base::aodh::api' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
@@ -30,7 +30,6 @@ describe 'tripleo::profile::base::aodh::api' do
is_expected.to contain_class('tripleo::profile::base::aodh')
is_expected.to_not contain_class('aodh::api')
is_expected.to_not contain_class('aodh::wsgi::apache')
- is_expected.to_not contain_aodh_config('api/enable_combination_alarms')
end
end
@@ -42,23 +41,8 @@ describe 'tripleo::profile::base::aodh::api' do
it 'should trigger complete configuration' do
is_expected.to contain_class('aodh::api')
is_expected.to contain_class('aodh::wsgi::apache')
- is_expected.to contain_aodh_config('api/enable_combination_alarms').with_value('false')
end
end
-
- context 'with step 4 and enable combo alarms' do
- let(:params) { {
- :step => 4,
- :enable_combination_alarms => true
- } }
-
- it 'should trigger complete configuration' do
- is_expected.to contain_class('aodh::api')
- is_expected.to contain_class('aodh::wsgi::apache')
- is_expected.to contain_aodh_config('api/enable_combination_alarms').with_value('true')
- end
- end
-
end
diff --git a/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb b/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
index 5ac7971..495794d 100644
--- a/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_evaluator_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::evaluator' do
shared_examples_for 'tripleo::profile::base::aodh::evaluator' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_listener_spec.rb b/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
index da1305f..022ee5c 100644
--- a/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_listener_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::listener' do
shared_examples_for 'tripleo::profile::base::aodh::listener' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb b/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
index 1b74a68..f2116ca 100644
--- a/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_notifier_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::aodh::notifier' do
shared_examples_for 'tripleo::profile::base::aodh::notifier' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::aodh': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_aodh_spec.rb b/spec/classes/tripleo_profile_base_aodh_spec.rb
index dd6554e..3befa23 100644
--- a/spec/classes/tripleo_profile_base_aodh_spec.rb
+++ b/spec/classes/tripleo_profile_base_aodh_spec.rb
@@ -34,7 +34,7 @@ describe 'tripleo::profile::base::aodh' do
let(:params) { {
:step => 3,
:bootstrap_node => 'node.example.com',
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger complete configuration' do
@@ -67,7 +67,7 @@ describe 'tripleo::profile::base::aodh' do
let(:params) { {
:step => 4,
:bootstrap_node => 'somethingelse.example.com',
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger aodh configuration without mysql grant' do
diff --git a/spec/classes/tripleo_profile_base_barbican_api_spec.rb b/spec/classes/tripleo_profile_base_barbican_api_spec.rb
new file mode 100644
index 0000000..169642e
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_barbican_api_spec.rb
@@ -0,0 +1,107 @@
+#
+# Copyright (C) 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.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::barbican::api' do
+ shared_examples_for 'tripleo::profile::base::barbican::api' do
+ let(:pre_condition) do
+ "class { '::tripleo::profile::base::barbican': step => #{params[:step]} }"
+ end
+
+ context 'with step less than 3' do
+ let(:params) { { :step => 1 } }
+
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::barbican::api')
+ is_expected.to contain_class('tripleo::profile::base::barbican')
+ is_expected.to_not contain_class('barbican::api')
+ is_expected.to_not contain_class('barbican::api::logging')
+ is_expected.to_not contain_class('barbican::keystone::notification')
+ is_expected.to_not contain_class('barbican::quota')
+ is_expected.to_not contain_class('barbican::wsgi::apache')
+ end
+ end
+
+ context 'with step 3 on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'node.example.com',
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('tripleo::profile::base::barbican::api')
+ is_expected.to contain_class('tripleo::profile::base::barbican')
+ is_expected.to contain_class('barbican::db::mysql')
+ is_expected.to contain_class('barbican::db::sync')
+ is_expected.to contain_class('barbican::api')
+ is_expected.to contain_class('barbican::api::logging')
+ is_expected.to contain_class('barbican::keystone::notification')
+ is_expected.to contain_class('barbican::quota')
+ is_expected.to contain_class('barbican::wsgi::apache')
+ end
+ end
+
+ context 'with step 3 not on bootstrap node' do
+ let(:params) { {
+ :step => 3,
+ :bootstrap_node => 'other.example.com',
+ } }
+
+ it 'should not trigger any configuration' do
+ is_expected.to contain_class('tripleo::profile::base::barbican::api')
+ is_expected.to contain_class('tripleo::profile::base::barbican')
+ is_expected.to_not contain_class('barbican::db::mysql')
+ is_expected.to_not contain_class('barbican::db::sync')
+ is_expected.to_not contain_class('barbican::api')
+ is_expected.to_not contain_class('barbican::api::logging')
+ is_expected.to_not contain_class('barbican::keystone::notification')
+ is_expected.to_not contain_class('barbican::quota')
+ is_expected.to_not contain_class('barbican::wsgi::apache')
+ end
+ end
+
+ context 'with step 4 not on bootstrap node' do
+ let(:params) { {
+ :step => 4,
+ :bootstrap_node => 'other.example.com',
+ } }
+
+ it 'should trigger complete configuration with out db items' do
+ is_expected.to_not contain_class('barbican::db::mysql')
+ # TODO(aschultz): barbican::api includes this automatically
+ #is_expected.to_not contain_class('barbican::db::sync')
+ is_expected.to contain_class('barbican::api')
+ is_expected.to contain_class('barbican::api::logging')
+ is_expected.to contain_class('barbican::keystone::notification')
+ is_expected.to contain_class('barbican::quota')
+ is_expected.to contain_class('barbican::wsgi::apache')
+ end
+ end
+
+ end
+
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) do
+ facts.merge({ :hostname => 'node.example.com' })
+ end
+
+ it_behaves_like 'tripleo::profile::base::barbican::api'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_barbican_spec.rb b/spec/classes/tripleo_profile_base_barbican_spec.rb
new file mode 100644
index 0000000..470b2c2
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_barbican_spec.rb
@@ -0,0 +1,56 @@
+#
+# Copyright (C) 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.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::barbican' do
+ shared_examples_for 'tripleo::profile::base::barbican' do
+ context 'with step less than 3' do
+ let(:params) { { :step => 1 } }
+ it 'should do nothing' do
+ is_expected.to contain_class('tripleo::profile::base::barbican')
+ is_expected.to_not contain_class('barbican')
+ is_expected.to_not contain_class('barbican::config')
+ is_expected.to_not contain_class('barbican::client')
+ end
+ end
+
+ context 'with step 3' do
+ let(:params) { {
+ :step => 3,
+ } }
+
+ it 'should trigger complete configuration' do
+ is_expected.to contain_class('barbican').with(
+ :rabbit_hosts => params[:rabbit_hosts]
+ )
+ is_expected.to contain_class('barbican')
+ is_expected.to contain_class('barbican::config')
+ is_expected.to contain_class('barbican::client')
+ end
+ end
+ end
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) do
+ facts.merge({ :hostname => 'node.example.com' })
+ end
+
+ it_behaves_like 'tripleo::profile::base::barbican'
+ end
+ end
+end
diff --git a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
index 256b756..935e9e8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_api_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::api' do
shared_examples_for 'tripleo::profile::base::ceilometer::api' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
index 718c700..2e4b50a 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_collector_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::collector' do
shared_examples_for 'tripleo::profile::base::ceilometer::collector' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step 3 on bootstrap node with mongodb' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
index bbef431..c13f3c8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_expirer_spec.rb
@@ -19,7 +19,7 @@ require 'spec_helper'
describe 'tripleo::profile::base::ceilometer::expirer' do
shared_examples_for 'tripleo::profile::base::ceilometer::expirer' do
let(:pre_condition) do
- "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['127.0.0.1'] }"
+ "class { '::tripleo::profile::base::ceilometer': step => #{params[:step]}, rabbit_hosts => ['localhost.localdomain'] }"
end
context 'with step less than 4' do
diff --git a/spec/classes/tripleo_profile_base_ceilometer_spec.rb b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
index 5510f4b..075aff8 100644
--- a/spec/classes/tripleo_profile_base_ceilometer_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceilometer_spec.rb
@@ -30,7 +30,7 @@ describe 'tripleo::profile::base::ceilometer' do
context 'with step 3' do
let(:params) { {
:step => 3,
- :rabbit_hosts => ['127.0.0.1', '127.0.0.2']
+ :rabbit_hosts => ['localhost1.localdomain', 'localhost2.localdomain']
} }
it 'should trigger complete configuration' do
diff --git a/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb b/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb
index e9459d0..88f971b 100644
--- a/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb
+++ b/spec/classes/tripleo_profile_base_ceph_rgw_spec.rb
@@ -30,7 +30,9 @@ describe 'tripleo::profile::base::ceph::rgw' do
{
:keystone_admin_token => 'token',
:keystone_url => 'url',
- :rgw_key => 'key'
+ :rgw_key => 'key',
+ :civetweb_bind_ip => '2001:db8:0:1234:0:567:8:1',
+ :civetweb_bind_port => '8888',
}
end
@@ -39,7 +41,7 @@ describe 'tripleo::profile::base::ceph::rgw' do
it 'should do nothing' do
is_expected.to contain_class('tripleo::profile::base::ceph::rgw')
is_expected.to contain_class('tripleo::profile::base::ceph')
- is_expected.to_not contain_class('ceph::profile::rgw')
+ is_expected.to_not contain_class('ceph::rgw')
end
end
@@ -47,7 +49,10 @@ describe 'tripleo::profile::base::ceph::rgw' do
let(:params) { default_params.merge({ :step => 3 }) }
it 'should include rgw configuration' do
is_expected.to contain_class('tripleo::profile::base::ceph')
- is_expected.to contain_class('ceph::profile::rgw')
+ is_expected.to contain_ceph__rgw('radosgw.gateway').with(
+ :frontend_type => 'civetweb',
+ :rgw_frontends => 'civetweb port=[2001:db8:0:1234:0:567:8:1]:8888'
+ )
is_expected.to contain_ceph__key('client.radosgw.gateway').with(
:secret => 'key',
:cap_mon => 'allow *',
@@ -62,7 +67,10 @@ describe 'tripleo::profile::base::ceph::rgw' do
let(:params) { default_params.merge({ :step => 4 }) }
it 'should include rgw configuration' do
is_expected.to contain_class('tripleo::profile::base::ceph')
- is_expected.to contain_class('ceph::profile::rgw')
+ is_expected.to contain_ceph__rgw('radosgw.gateway').with(
+ :frontend_type => 'civetweb',
+ :rgw_frontends => 'civetweb port=[2001:db8:0:1234:0:567:8:1]:8888'
+ )
is_expected.to contain_ceph__key('client.radosgw.gateway').with(
:secret => 'key',
:cap_mon => 'allow *',
diff --git a/spec/fixtures/hieradata/default.yaml b/spec/fixtures/hieradata/default.yaml
index f0f7f1c..87ae28c 100644
--- a/spec/fixtures/hieradata/default.yaml
+++ b/spec/fixtures/hieradata/default.yaml
@@ -8,6 +8,9 @@ redis_vip: '127.0.0.1'
aodh::auth::auth_password: 'password'
aodh::db::mysql::password: 'password'
aodh::keystone::authtoken::password: 'password'
+# babican profile required hieradata
+barbican::db::mysql::password: 'password'
+barbican::keystone::authtoken::password: 'password'
ceilometer::keystone::authtoken::password: 'password'
# ceph related items
ceph::profile::params::mon_key: 'password'