From 99b7ebd3ef5c09b703ba026637f75fad23698e88 Mon Sep 17 00:00:00 2001 From: Sofer Athlan-Guyot Date: Wed, 13 Apr 2016 22:37:05 +0200 Subject: Refactor HAproxy and VIP creation. In tripleo heat template, overcloud_controller_pacemaker.pp has a lot of duplicate code to define haproxy and vip creation. This is an attempt to refactor this. Change-Id: I4cc6711911c1bfa1bc6063979e2b2a7ab5b8d37b --- manifests/pacemaker/haproxy_with_vip.pp | 64 +++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 manifests/pacemaker/haproxy_with_vip.pp (limited to 'manifests/pacemaker') diff --git a/manifests/pacemaker/haproxy_with_vip.pp b/manifests/pacemaker/haproxy_with_vip.pp new file mode 100644 index 0000000..0539beb --- /dev/null +++ b/manifests/pacemaker/haproxy_with_vip.pp @@ -0,0 +1,64 @@ +# Copyright 2016 Red Hat, Inc. +# All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. You may obtain +# a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# == Define: tripleo::pacemaker::haproxy_with_vip +# +# Configure the vip with the haproxy under pacemaker +# +# === Parameters: +# +# [*vip_name*] +# (String) Logical name of the vip (control, public, storage ...) +# Required +# +# [*ip_address*] +# (String) IP address on which HAProxy is colocated +# Required +# +# [*ensure*] +# (Boolean) Create the all the resources only if true. False won't +# destroy the resource, it will just not create them. +# Default to true +define tripleo::pacemaker::haproxy_with_vip($vip_name, $ip_address, $ensure = true) { + if($ensure) { + if is_ipv6_address($ip_address) { + $netmask = '64' + } else { + $netmask = '32' + } + + pacemaker::resource::ip { "${vip_name}_vip": + ip_address => $ip_address, + cidr_netmask => $netmask, + } + pacemaker::constraint::base { "${vip_name}_vip-then-haproxy": + constraint_type => 'order', + first_resource => "ip-${ip_address}", + second_resource => 'haproxy-clone', + first_action => 'start', + second_action => 'start', + constraint_params => 'kind=Optional', + require => [Pacemaker::Resource::Service['haproxy'], + Pacemaker::Resource::Ip["${vip_name}_vip"]], + } + pacemaker::constraint::colocation { "${vip_name}_vip-with-haproxy": + source => "ip-${ip_address}", + target => 'haproxy-clone', + score => 'INFINITY', + require => [Pacemaker::Resource::Service['haproxy'], + Pacemaker::Resource::Ip["${vip_name}_vip"]], + } + } +} -- cgit 1.2.3-korg