diff options
-rw-r--r-- | manifests/profile/base/haproxy.pp (renamed from manifests/profile/base/loadbalancer.pp) | 4 | ||||
-rw-r--r-- | manifests/profile/base/keepalived.pp | 42 | ||||
-rw-r--r-- | manifests/profile/base/manila/api.pp | 35 | ||||
-rw-r--r-- | manifests/profile/base/manila/scheduler.pp | 46 | ||||
-rw-r--r-- | manifests/profile/base/manila/share.pp | 35 | ||||
-rw-r--r-- | manifests/profile/base/nova.pp | 32 | ||||
-rw-r--r-- | manifests/profile/base/nova/conductor.pp | 35 | ||||
-rw-r--r-- | manifests/profile/pacemaker/haproxy.pp (renamed from manifests/profile/pacemaker/loadbalancer.pp) | 8 | ||||
-rw-r--r-- | manifests/profile/pacemaker/manila.pp | 162 | ||||
-rw-r--r-- | manifests/profile/pacemaker/neutron/server.pp | 15 | ||||
-rw-r--r-- | manifests/profile/pacemaker/nova.pp | 42 | ||||
-rw-r--r-- | manifests/profile/pacemaker/nova/conductor.pp | 45 |
12 files changed, 481 insertions, 20 deletions
diff --git a/manifests/profile/base/loadbalancer.pp b/manifests/profile/base/haproxy.pp index d9e2b15..31a5415 100644 --- a/manifests/profile/base/loadbalancer.pp +++ b/manifests/profile/base/haproxy.pp @@ -12,7 +12,7 @@ # License for the specific language governing permissions and limitations # under the License. # -# == Class: tripleo::profile::base::loadbalancer +# == Class: tripleo::profile::base::haproxy # # Loadbalancer profile for tripleo # @@ -27,7 +27,7 @@ # (Optional) Whether or not loadbalancer is enabled. # Defaults to hiera('enable_load_balancer', true). # -class tripleo::profile::base::loadbalancer ( +class tripleo::profile::base::haproxy ( $enable_load_balancer = hiera('enable_load_balancer', true), $step = hiera('step'), ) { diff --git a/manifests/profile/base/keepalived.pp b/manifests/profile/base/keepalived.pp new file mode 100644 index 0000000..af7c095 --- /dev/null +++ b/manifests/profile/base/keepalived.pp @@ -0,0 +1,42 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::keepalived +# +# Loadbalancer profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +# [*enable_load_balancer*] +# (Optional) Whether or not loadbalancer is enabled. +# Defaults to hiera('enable_load_balancer', true). +# +class tripleo::profile::base::keepalived ( + $enable_load_balancer = hiera('enable_load_balancer', true), + $step = hiera('step'), +) { + + if $step >= 1 { + if $enable_load_balancer and hiera('enable_keepalived', true){ + include ::tripleo::keepalived + } + } + +} + diff --git a/manifests/profile/base/manila/api.pp b/manifests/profile/base/manila/api.pp new file mode 100644 index 0000000..c1188ec --- /dev/null +++ b/manifests/profile/base/manila/api.pp @@ -0,0 +1,35 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::manila::api +# +# Manila API profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::manila::api ( + $step = hiera('step'), +) { + + if $step >= 4 { + include ::manila + include ::manila::api + } +} + diff --git a/manifests/profile/base/manila/scheduler.pp b/manifests/profile/base/manila/scheduler.pp new file mode 100644 index 0000000..b6d7593 --- /dev/null +++ b/manifests/profile/base/manila/scheduler.pp @@ -0,0 +1,46 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::manila::scheduler +# +# Manila Scheduler profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +# [*sync_db*] +# (Optiona) Whether to run db sync. +# Defaults to true. +# +class tripleo::profile::base::manila::scheduler ( + $step = hiera('step'), + $sync_db = true, +) { + + if $step >= 3 and $sync_db { + include ::manila::db::mysql + } + + if $step >= 4 { + include ::manila::compute::nova + include ::manila::network::neutron + include ::manila::scheduler + } + +} + diff --git a/manifests/profile/base/manila/share.pp b/manifests/profile/base/manila/share.pp new file mode 100644 index 0000000..932e013 --- /dev/null +++ b/manifests/profile/base/manila/share.pp @@ -0,0 +1,35 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::manila::share +# +# Manila share profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::manila::share ( + $step = hiera('step'), +) { + + if $step >= 4 { + include ::manila::share + } + +} + diff --git a/manifests/profile/base/nova.pp b/manifests/profile/base/nova.pp new file mode 100644 index 0000000..abedf37 --- /dev/null +++ b/manifests/profile/base/nova.pp @@ -0,0 +1,32 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::nova +# +# Nova base profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step of the deployment +# Defaults to hiera('step') +# +class tripleo::profile::base::nova ( + $step = hiera('step'), +) { + if $step >= 4 { + include ::nova + include ::nova::config + } +} diff --git a/manifests/profile/base/nova/conductor.pp b/manifests/profile/base/nova/conductor.pp new file mode 100644 index 0000000..494bbc7 --- /dev/null +++ b/manifests/profile/base/nova/conductor.pp @@ -0,0 +1,35 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::base::nova::conductor +# +# Nova Conductor profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +class tripleo::profile::base::nova::conductor ( + $step = hiera('step'), +) { + + if $step >= 4 { + include ::tripleo::profile::base::nova + include ::nova::conductor + } + +} diff --git a/manifests/profile/pacemaker/loadbalancer.pp b/manifests/profile/pacemaker/haproxy.pp index 24b1596..a7aca58 100644 --- a/manifests/profile/pacemaker/loadbalancer.pp +++ b/manifests/profile/pacemaker/haproxy.pp @@ -12,9 +12,9 @@ # License for the specific language governing permissions and limitations # under the License. # -# == Class: tripleo::profile::pacemaker::loadbalancer +# == Class: tripleo::profile::pacemaker::haproxy # -# Loadbalancer Pacemaker HA profile for tripleo +# HAproxy with Pacemaker HA profile for tripleo # # === Parameters # @@ -31,13 +31,13 @@ # (Optional) Whether load balancing is enabled for this cluster # Defaults to hiera('enable_load_balancer', true) # -class tripleo::profile::pacemaker::loadbalancer ( +class tripleo::profile::pacemaker::haproxy ( $bootstrap_node = hiera('bootstrap_nodeid'), $step = hiera('step'), $enable_load_balancer = hiera('enable_load_balancer', true) ) { - include ::tripleo::profile::base::loadbalancer + include ::tripleo::profile::base::haproxy if $::hostname == downcase($bootstrap_node) { $pacemaker_master = true diff --git a/manifests/profile/pacemaker/manila.pp b/manifests/profile/pacemaker/manila.pp new file mode 100644 index 0000000..37cab9f --- /dev/null +++ b/manifests/profile/pacemaker/manila.pp @@ -0,0 +1,162 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::pacemaker::manila +# +# Manila Pacemaker HA profile for tripleo +# +# === Parameters +# +# [*bootstrap_node*] +# (Optional) The hostname of the node responsible for bootstrapping tasks +# Defaults to hiera('bootstrap_nodeid') +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +# [*manila_generic_enable*] +# (Optional) Enable the generic backend. +# Defaults to hiera('manila_generic_enable_backend', 'false') +# +# [*driver_handles_share_servers*] +# (Optional) +# Defaults to hiera('manila::backend::generic::driver_handles_share_servers') +# +# [*smb_template_config_path*] +# (Optional) +# Defaults to hiera('manila::backend::generic::smb_template_config_path') +# +# [*volume_name_template*] +# (Optional) +# Defaults to hiera('manila::backend::generic::volume_name_template') + +# [*volume_snapshot_name_template*] +# (Optional) +# Defaults to hiera('manila::backend::generic::volume_snapshot_name_template') +# +# [*share_mount_path*] +# (Optional) +# Defaults to hiera('manila::backend::generic::share_mount_path') +# +# [*max_time_to_create_volume*] +# (Optional) +# Defaults to hiera('manila::backend::generic::max_time_to_create_volume') +# +# [*max_time_to_attach*] +# (Optional) +# Defaults to hiera('manila::backend::generic::max_time_to_attach') +# +# [*service_instance_smb_config_path*] +# (Optional) +# Defaults to downcase(hiera('manila::backend::generic::service_instance_smb_config_path')) +# +# [*share_volume_fstype*] +# (Optional) +# Defaults to hiera('manila::backend::generic::share_volume_fstype') +# +# [*cinder_volume_type*] +# (Optional) +# Defaults to hiera('manila::backend::generic::cinder_volume_type', '') +# +# [*service_instance_user*] +# (Optional) +# Defaults to hiera('manila::service_instance::service_instance_user') + +# [*service_instance_password*] +# (Optional) +# Defaults to hiera('manila::service_instance::service_instance_password') + +# [*service_instance_flavor_id*] +# (Optional) +# Defaults to hiera('manila::service_instance::service_instance_flavor_id') +# +class tripleo::profile::pacemaker::manila ( + $bootstrap_node = hiera('bootstrap_nodeid'), + $step = hiera('step'), + $manila_generic_enable = hiera('manila_generic_enable_backend', false), + $driver_handles_share_servers = hiera('manila::backend::generic::driver_handles_share_servers'), + $smb_template_config_path = hiera('manila::backend::generic::smb_template_config_path'), + $volume_name_template = hiera('manila::backend::generic::volume_name_template'), + $volume_snapshot_name_template = hiera('manila::backend::generic::volume_snapshot_name_template'), + $share_mount_path = hiera('manila::backend::generic::share_mount_path'), + $max_time_to_create_volume = hiera('manila::backend::generic::max_time_to_create_volume'), + $max_time_to_attach = hiera('manila::backend::generic::max_time_to_attach'), + $service_instance_smb_config_path = hiera('manila::backend::generic::service_instance_smb_config_path'), + $share_volume_fstype = hiera('manila::backend::generic::share_volume_fstype'), + $cinder_volume_type = hiera('manila::backend::generic::cinder_volume_type', ''), + $service_instance_user = hiera('manila::service_instance::service_instance_user'), + $service_instance_password = hiera('manila::service_instance::service_instance_password'), + $service_instance_flavor_id = hiera('manila::service_instance::service_instance_flavor_id'), +) { + + if $::hostname == downcase($bootstrap_node) { + $pacemaker_master = true + } else { + $pacemaker_master = false + } + + # make it so puppet can't restart the manila-share service, since that is + # the only pacemaker managed one + Service <| tag == 'manila-share' |> { + hasrestart => true, + restart => '/bin/true', + start => '/bin/true', + stop => '/bin/true', + } + + if $step >= 4 { + include ::tripleo::profile::base::manila::api + include ::tripleo::profile::base::manila::scheduler + include ::tripleo::profile::base::manila::share + + $manila_generic_enable = hiera('manila_generic_enable_backend', false) + if $manila_generic_enable { + $manila_generic_backend = hiera('manila::backend::generic::title') + manila::backend::generic { $manila_generic_backend : + driver_handles_share_servers => $driver_handles_share_servers, + smb_template_config_path => $smb_template_config_path, + volume_name_template => $volume_name_template , + volume_snapshot_name_template => $volume_snapshot_name_template, + share_mount_path => $share_mount_path, + max_time_to_create_volume => $max_time_to_create_volume, + max_time_to_attach => $max_time_to_attach, + service_instance_smb_config_path => $service_instance_smb_config_path, + share_volume_fstype => $share_volume_fstype, + cinder_volume_type => $cinder_volume_type, + } + + manila_config { + "${manila_generic_backend}/service_instance_user": value => $service_instance_user; + "${manila_generic_backend}/service_instance_password": value => $service_instance_password; + "${manila_generic_backend}/service_instance_flavor_id": value => $service_instance_flavor_id; + } + + include ::manila::volume::cinder + } + + $manila_enabled_backends = delete_undef_values([$manila_generic_backend]) + class { '::manila::backends' : + enabled_share_backends => $manila_enabled_backends, + } + } + + if $step >= 5 and $pacemaker_master { + + # only manila-share is pacemaker managed, and in a/p + pacemaker::resource::service { $::manila::params::share_service : } + + } +} diff --git a/manifests/profile/pacemaker/neutron/server.pp b/manifests/profile/pacemaker/neutron/server.pp index 83e8a2a..f4fe083 100644 --- a/manifests/profile/pacemaker/neutron/server.pp +++ b/manifests/profile/pacemaker/neutron/server.pp @@ -35,22 +35,9 @@ class tripleo::profile::pacemaker::neutron::server ( include ::tripleo::profile::pacemaker::neutron if $step >= 5 { - class { '::tripleo::profile::base::neutron::server': sync_db => ($::hostname == downcase($pacemaker_master)), } - - if ($::hostname == downcase($pacemaker_master)) { - pacemaker::constraint::base { 'keystone-to-neutron-server-constraint': - constraint_type => 'order', - first_resource => 'openstack-core-clone', - second_resource => "${::neutron::params::server_service}-clone", - first_action => 'start', - second_action => 'start', - require => [Pacemaker::Resource::Ocf['openstack-core'], - Pacemaker::Resource::Service[$::neutron::params::server_service]], - } - } - } + } diff --git a/manifests/profile/pacemaker/nova.pp b/manifests/profile/pacemaker/nova.pp new file mode 100644 index 0000000..09aed61 --- /dev/null +++ b/manifests/profile/pacemaker/nova.pp @@ -0,0 +1,42 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::pacemaker::nova +# +# Nova base with Pacemaker profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The step in the deployment +# Defaults to hiera('step') +# +class tripleo::profile::pacemaker::nova ( + $step = hiera('step'), +) { + + Service <| + tag == 'nova-service' + |> { + hasrestart => true, + restart => '/bin/true', + start => '/bin/true', + stop => '/bin/true', + } + + if $step >= 4 { + include ::tripleo::profile::base::nova + } + +} diff --git a/manifests/profile/pacemaker/nova/conductor.pp b/manifests/profile/pacemaker/nova/conductor.pp new file mode 100644 index 0000000..76dc462 --- /dev/null +++ b/manifests/profile/pacemaker/nova/conductor.pp @@ -0,0 +1,45 @@ +# Copyright 2016 Red Hat, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Class: tripleo::profile::pacemaker::nova::conductor +# +# Nova Conductor with Pacemaker profile for tripleo +# +# === Parameters +# +# [*step*] +# (Optional) The current step in deployment. See tripleo-heat-templates +# for more details. +# Defaults to hiera('step') +# +# [*pacemaker_master*] +# (Optional) The hostname of the pacemaker master +# Defaults to hiera('bootstrap_nodeid') +# +class tripleo::profile::pacemaker::nova::conductor ( + $step = hiera('step'), + $pacemaker_master = hiera('bootstrap_nodeid'), +) { + + include ::nova::params + include ::tripleo::profile::pacemaker::nova + include ::tripleo::profile::base::nova::conductor + + if $step >= 5 and downcase($::hostname) == $pacemaker_master { + pacemaker::resource::service { $::nova::params::conductor_service_name: + clone_params => 'interleave=true', + } + } + +} |