aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/facter/alt_fqdns.rb17
-rw-r--r--lib/puppet/parser/functions/tripleo_swift_devices.rb39
-rw-r--r--manifests/haproxy.pp20
-rw-r--r--manifests/keepalived.pp18
-rw-r--r--manifests/profile/base/gnocchi/metricd.pp4
-rw-r--r--manifests/profile/base/gnocchi/statsd.pp4
-rw-r--r--manifests/profile/base/heat/api.pp3
-rw-r--r--manifests/profile/base/heat/api_cfn.pp3
-rw-r--r--manifests/profile/base/heat/api_cloudwatch.pp3
-rw-r--r--manifests/profile/base/heat/engine.pp3
-rw-r--r--manifests/profile/base/ironic/conductor.pp18
-rw-r--r--manifests/profile/base/keystone.pp3
-rw-r--r--manifests/profile/base/swift/ringbuilder.pp30
13 files changed, 149 insertions, 16 deletions
diff --git a/lib/facter/alt_fqdns.rb b/lib/facter/alt_fqdns.rb
index 8a4d59b..216beef 100644
--- a/lib/facter/alt_fqdns.rb
+++ b/lib/facter/alt_fqdns.rb
@@ -14,9 +14,9 @@
# under the License.
[
'external',
- 'internalapi',
+ 'internal_api',
'storage',
- 'storagemgmt',
+ 'storage_mgmt',
'tenant',
'management',
].each do |network|
@@ -24,10 +24,21 @@
setcode do
external_hostname_parts = [
Facter.value(:hostname),
- network,
+ network.gsub('_', ''),
Facter.value(:domain),
].reject { |part| part.nil? || part.empty? }
external_hostname_parts.join(".")
end
end
end
+# map ctlplane network to management fqdn
+Facter.add('fqdn_ctlplane') do
+ setcode do
+ hostname_parts = [
+ Facter.value(:hostname),
+ 'management',
+ Facter.value(:domain),
+ ].reject { |part| part.nil? || part.empty? }
+ hostname_parts.join(".")
+ end
+end
diff --git a/lib/puppet/parser/functions/tripleo_swift_devices.rb b/lib/puppet/parser/functions/tripleo_swift_devices.rb
new file mode 100644
index 0000000..b320d62
--- /dev/null
+++ b/lib/puppet/parser/functions/tripleo_swift_devices.rb
@@ -0,0 +1,39 @@
+# Build Swift devices list from the parts, e.g. for:
+# raw_disk_prefix = 'r1z1-'
+# swift_storage_node_ips = ['192.168.1.12', '192.168.1.13']
+# raw_disks = [':%PORT%/device1', ':%PORT%/device2']
+#
+# devices will be ['r1z1-192.168.1.12:%PORT%/device1',
+# 'r1z1-192.168.1.12:%PORT%/device2'
+# 'r1z1-192.168.1.13:%PORT%/device1'
+# 'r1z1-192.168.1.13:%PORT%/device2']
+module Puppet::Parser::Functions
+ newfunction(:tripleo_swift_devices, :arity =>3, :type => :rvalue,
+ :doc => ("Build list of swift devices the TripleO way:" +
+ "from a raw disk prefix, a list of swift storage" +
+ "node IPs, and a list of raw disks.")) do |args|
+
+ raw_disk_prefix = args[0]
+ swift_node_ips = args[1]
+ raw_disks = args[2]
+
+ unless raw_disk_prefix.is_a?(String)
+ raise Puppet::ParseError, "tripleo_swift_devices: Argument 'raw_disk_prefix' must be a string. The value given was: #{raw_disk_prefix}"
+ end
+ unless swift_node_ips.is_a?(Array)
+ raise Puppet::ParseError, "tripleo_swift_devices: Argument 'swift_node_ips' must be an array. The value given was: #{swift_node_ips}"
+ end
+ unless raw_disks.is_a?(Array)
+ raise Puppet::ParseError, "tripleo_swift_devices: Argument 'raw_disks' must be an array. The value given was: #{raw_disks}"
+ end
+
+ devices = []
+ for ip in swift_node_ips do
+ for disk in raw_disks do
+ devices << "#{raw_disk_prefix}#{ip}#{disk}"
+ end
+ end
+
+ return devices
+ end
+end
diff --git a/manifests/haproxy.pp b/manifests/haproxy.pp
index a79bf14..e1f5d50 100644
--- a/manifests/haproxy.pp
+++ b/manifests/haproxy.pp
@@ -230,6 +230,10 @@
# (optional) Enable or not Zaqar Api binding
# Defaults to hiera('zaqar_api_enabled', false)
#
+# [*ceph_rgw*]
+# (optional) Enable or not Ceph RadosGW binding
+# Defaults to hiera('ceph_rgw_enabled', false)
+#
# [*opendaylight*]
# (optional) Enable or not OpenDaylight binding
# Defaults to hiera('opendaylight_api_enabled', false)
@@ -281,6 +285,8 @@
# 'trove_api_ssl_port' (Defaults to 13779)
# 'zaqar_api_port' (Defaults to 8888)
# 'zaqar_api_ssl_port' (Defaults to 13888)
+# 'ceph_rgw_port' (Defaults to 8080)
+# 'ceph_rgw_ssl_port' (Defaults to 13808)
# Defaults to {}
#
class tripleo::haproxy (
@@ -333,6 +339,7 @@ class tripleo::haproxy (
$redis_password = undef,
$midonet_api = false,
$zaqar_api = hiera('zaqar_api_enabled', false),
+ $ceph_rgw = hiera('ceph_rgw_enabled', false),
$opendaylight = hiera('opendaylight_api_enabled', false),
$service_ports = {}
) {
@@ -381,6 +388,8 @@ class tripleo::haproxy (
trove_api_ssl_port => 13779,
zaqar_api_port => 8888,
zaqar_api_ssl_port => 13888,
+ ceph_rgw_port => 8080,
+ ceph_rgw_ssl_port => 13808,
}
$ports = merge($default_service_ports, $service_ports)
@@ -935,6 +944,17 @@ class tripleo::haproxy (
}
}
+ if $ceph_rgw {
+ ::tripleo::haproxy::endpoint { 'ceph_rgw':
+ public_virtual_ip => $public_virtual_ip,
+ internal_ip => hiera('ceph_rgw_vip', $controller_virtual_ip),
+ service_port => $ports[ceph_rgw_port],
+ ip_addresses => hiera('ceph_rgw_node_ips', $controller_hosts_real),
+ server_names => $controller_hosts_names_real,
+ public_ssl_port => $ports[ceph_rgw_ssl_port],
+ }
+ }
+
$opendaylight_api_vip = hiera('opendaylight_api_vip', $controller_virtual_ip)
$opendaylight_bind_opts = {
"${opendaylight_api_vip}:8081" => [],
diff --git a/manifests/keepalived.pp b/manifests/keepalived.pp
index 45d772e..c0fb3ef 100644
--- a/manifests/keepalived.pp
+++ b/manifests/keepalived.pp
@@ -54,6 +54,11 @@
# A string.
# Defaults to false
#
+# [*redis_virtual_ip*]
+# Virtual IP on the redis service.
+# A string.
+# Defaults to false
+#
class tripleo::keepalived (
$controller_virtual_ip,
$control_virtual_interface,
@@ -62,6 +67,7 @@ class tripleo::keepalived (
$internal_api_virtual_ip = false,
$storage_virtual_ip = false,
$storage_mgmt_virtual_ip = false,
+ $redis_virtual_ip = false,
) {
case $::osfamily {
@@ -141,4 +147,16 @@ class tripleo::keepalived (
}
}
+ if $redis_virtual_ip and $redis_virtual_ip != $controller_virtual_ip {
+ $redis_virtual_interface = interface_for_ip($redis_virtual_ip)
+ # KEEPALIVE STORAGE MANAGEMENT NETWORK
+ keepalived::instance { '56':
+ interface => $redis_virtual_interface,
+ virtual_ips => [join([$redis_virtual_ip, ' dev ', $redis_virtual_interface])],
+ state => 'MASTER',
+ track_script => ['haproxy'],
+ priority => 101,
+ }
+ }
+
}
diff --git a/manifests/profile/base/gnocchi/metricd.pp b/manifests/profile/base/gnocchi/metricd.pp
index 4d7eb89..e69bbd5 100644
--- a/manifests/profile/base/gnocchi/metricd.pp
+++ b/manifests/profile/base/gnocchi/metricd.pp
@@ -28,7 +28,9 @@ class tripleo::profile::base::gnocchi::metricd (
) {
include ::tripleo::profile::base::gnocchi
- if $step >= 4 {
+ if $step >= 5 {
include ::gnocchi::metricd
+ Keystone_endpoint<||> -> Service['gnocchi-metricd']
+ Keystone_user_role<||> -> Service['gnocchi-metricd']
}
}
diff --git a/manifests/profile/base/gnocchi/statsd.pp b/manifests/profile/base/gnocchi/statsd.pp
index 775b043..1fe4067 100644
--- a/manifests/profile/base/gnocchi/statsd.pp
+++ b/manifests/profile/base/gnocchi/statsd.pp
@@ -28,7 +28,9 @@ class tripleo::profile::base::gnocchi::statsd (
) {
include ::tripleo::profile::base::gnocchi
- if $step >= 4 {
+ if $step >= 5 {
include ::gnocchi::statsd
+ Keystone_endpoint<||> -> Service['gnocchi-statsd']
+ Keystone_user_role<||> -> Service['gnocchi-statsd']
}
}
diff --git a/manifests/profile/base/heat/api.pp b/manifests/profile/base/heat/api.pp
index 68de12b..7166298 100644
--- a/manifests/profile/base/heat/api.pp
+++ b/manifests/profile/base/heat/api.pp
@@ -26,8 +26,9 @@
class tripleo::profile::base::heat::api (
$step = hiera('step'),
) {
+ include ::tripleo::profile::base::heat
+
if $step >= 4 {
- include ::tripleo::profile::base::heat
include ::heat::api
}
}
diff --git a/manifests/profile/base/heat/api_cfn.pp b/manifests/profile/base/heat/api_cfn.pp
index 7c80fc6..c1adae6 100644
--- a/manifests/profile/base/heat/api_cfn.pp
+++ b/manifests/profile/base/heat/api_cfn.pp
@@ -26,8 +26,9 @@
class tripleo::profile::base::heat::api_cfn (
$step = hiera('step'),
) {
+ include ::tripleo::profile::base::heat
+
if $step >= 4 {
- include ::tripleo::profile::base::heat
include ::heat::api_cfn
}
}
diff --git a/manifests/profile/base/heat/api_cloudwatch.pp b/manifests/profile/base/heat/api_cloudwatch.pp
index 6362275..3004db9 100644
--- a/manifests/profile/base/heat/api_cloudwatch.pp
+++ b/manifests/profile/base/heat/api_cloudwatch.pp
@@ -26,8 +26,9 @@
class tripleo::profile::base::heat::api_cloudwatch (
$step = hiera('step'),
) {
+ include ::tripleo::profile::base::heat
+
if $step >= 4 {
- include ::tripleo::profile::base::heat
include ::heat::api_cloudwatch
}
}
diff --git a/manifests/profile/base/heat/engine.pp b/manifests/profile/base/heat/engine.pp
index 32a711f..112fad8 100644
--- a/manifests/profile/base/heat/engine.pp
+++ b/manifests/profile/base/heat/engine.pp
@@ -37,12 +37,13 @@ class tripleo::profile::base::heat::engine (
$sync_db = false
}
+ include ::tripleo::profile::base::heat
+
if $step >= 3 and $sync_db {
include ::heat::db::mysql
}
if $step >= 4 or ( $step >= 3 and $sync_db ) {
- include ::tripleo::profile::base::heat
include ::heat::engine
}
diff --git a/manifests/profile/base/ironic/conductor.pp b/manifests/profile/base/ironic/conductor.pp
index 2cb61fb..4824648 100644
--- a/manifests/profile/base/ironic/conductor.pp
+++ b/manifests/profile/base/ironic/conductor.pp
@@ -22,15 +22,27 @@
# (Optional) The current step of the deployment
# Defaults to hiera('step')
#
+# [*manage_pxe*]
+# (Optional) Whether to manage the PXE/iPXE environment for the conductor.
+# Defaults to true
+#
class tripleo::profile::base::ironic::conductor (
$step = hiera('step'),
+ $manage_pxe = true,
) {
include ::tripleo::profile::base::ironic
if $step >= 4 {
- include ::ironic::drivers::deploy
- include ::ironic::drivers::ipmi
- include ::ironic::drivers::pxe
include ::ironic::conductor
+ include ::ironic::drivers::pxe
+ if $manage_pxe {
+ include ::ironic::pxe
+ }
+
+ # Configure a few popular drivers
+ include ::ironic::drivers::drac
+ include ::ironic::drivers::ilo
+ include ::ironic::drivers::ipmi
+ include ::ironic::drivers::ssh
}
}
diff --git a/manifests/profile/base/keystone.pp b/manifests/profile/base/keystone.pp
index 13ef700..fd38869 100644
--- a/manifests/profile/base/keystone.pp
+++ b/manifests/profile/base/keystone.pp
@@ -87,6 +87,9 @@ class tripleo::profile::base::keystone (
if hiera('ceilometer_api_enabled', false) {
include ::ceilometer::keystone::auth
}
+ if hiera('ceph_rgw_enabled', false) {
+ include ::ceph::rgw::keystone::auth
+ }
if hiera('cinder_api_enabled', false) {
include ::cinder::keystone::auth
}
diff --git a/manifests/profile/base/swift/ringbuilder.pp b/manifests/profile/base/swift/ringbuilder.pp
index e0f67cd..98a09a0 100644
--- a/manifests/profile/base/swift/ringbuilder.pp
+++ b/manifests/profile/base/swift/ringbuilder.pp
@@ -26,7 +26,8 @@
# Defaults to true
#
# [*devices*]
-# (Optional) The swift devices
+# (Optional) DEPRECATED The swift devices
+# Should pass raw_disk_prefix, raw_disks and swift_storage_node_ips instead
# Defaults to ''
#
# [*step*]
@@ -38,12 +39,30 @@
# (Optional) The swift zones
# Defaults to 1
#
+# [*raw_disk_prefix*]
+# (Optional) Disk prefix used to create devices list
+# Defaults to 'r1z1-'
+#
+# [*raw_disks*]
+# (Optional) list of raw disks in format
+# [':%PORT%/device1', ':%PORT%/device2']
+# Combined with raw_disk_prefix and swift_storage_node_ips
+# to create devices list
+# Defaults to an empty list
+#
+# [*swift_storage_node_ips*]
+# (Optional) list of ip addresses for nodes running swift_storage service
+# Defaults to hiera('swift_storage_node_ips') or an empty list
+#
class tripleo::profile::base::swift::ringbuilder (
$replicas,
$build_ring = true,
- $devices = '',
+ $devices = undef,
$step = hiera('step'),
$swift_zones = '1',
+ $raw_disk_prefix = 'r1z1-',
+ $raw_disks = [],
+ $swift_storage_node_ips = hiera('swift_storage_node_ips', []),
) {
if $step >= 2 {
# pre-install swift here so we can build rings
@@ -54,8 +73,11 @@ class tripleo::profile::base::swift::ringbuilder (
validate_bool($build_ring)
if $build_ring {
-
- $device_array = strip(split(rstrip($devices), ','))
+ if $devices {
+ $device_array = strip(split(rstrip($devices), ','))
+ } else {
+ $device_array = tripleo_swift_devices($raw_disk_prefix, $swift_storage_node_ips, $raw_disks)
+ }
# create local rings
swift::ringbuilder::create{ ['object', 'account', 'container']: