f94ad53471
Change-Id: I48038540d2a69a116521466369aaaddae02bceb3 Implements: blueprint ssl-endpoints
120 lines
4.0 KiB
Puppet
120 lines
4.0 KiB
Puppet
# == Define Resource Type: haproxy::balancermember
|
|
#
|
|
# This type will setup a balancer member inside a listening service
|
|
# configuration block in /etc/haproxy/haproxy.cfg on the load balancer.
|
|
# currently it only has the ability to specify the instance name,
|
|
# ip address, port, and whether or not it is a backup. More features
|
|
# can be added as needed. The best way to implement this is to export
|
|
# this resource for all haproxy balancer member servers, and then collect
|
|
# them on the main haproxy load balancer.
|
|
#
|
|
# === Requirement/Dependencies:
|
|
#
|
|
# Currently requires the puppetlabs/concat module on the Puppet Forge and
|
|
# uses storeconfigs on the Puppet Master to export/collect resources
|
|
# from all balancer members.
|
|
#
|
|
# === Parameters
|
|
#
|
|
# [*name*]
|
|
# The title of the resource is arbitrary and only utilized in the concat
|
|
# fragment name.
|
|
#
|
|
# [*listening_service*]
|
|
# The haproxy service's instance name (or, the title of the
|
|
# haproxy::listen resource). This must match up with a declared
|
|
# haproxy::listen resource.
|
|
#
|
|
# [*ports*]
|
|
# An array or commas-separated list of ports for which the balancer member
|
|
# will accept connections from the load balancer. Note that cookie values
|
|
# aren't yet supported, but shouldn't be difficult to add to the
|
|
# configuration. If you use an array in server_names and ipaddresses, the
|
|
# same port is used for all balancermembers.
|
|
#
|
|
# [*server_names*]
|
|
# The name of the balancer member server as known to haproxy in the
|
|
# listening service's configuration block. This defaults to the
|
|
# hostname. Can be an array of the same length as ipaddresses,
|
|
# in which case a balancermember is created for each pair of
|
|
# server_names and ipaddresses (in lockstep).
|
|
#
|
|
# [*ipaddresses*]
|
|
# The ip address used to contact the balancer member server.
|
|
# Can be an array, see documentation to server_names.
|
|
#
|
|
# [*ensure*]
|
|
# If the balancermember should be present or absent.
|
|
# Defaults to present.
|
|
#
|
|
# [*options*]
|
|
# An array of options to be specified after the server declaration
|
|
# in the listening service's configuration block.
|
|
#
|
|
# [*define_cookies*]
|
|
# If true, then add "cookie SERVERID" stickiness options.
|
|
# Default false.
|
|
#
|
|
# [*define_backups*]
|
|
# If true, declare all non-primary servers as backups. Use this option
|
|
# when you need to enforce active-passive failover.
|
|
#
|
|
# === Examples
|
|
#
|
|
# Exporting the resource for a balancer member:
|
|
#
|
|
# @@haproxy::balancermember { 'haproxy':
|
|
# listening_service => 'puppet00',
|
|
# ports => '8140',
|
|
# server_names => $::hostname,
|
|
# ipaddresses => $::ipaddress,
|
|
# options => 'check',
|
|
# }
|
|
#
|
|
#
|
|
# Collecting the resource on a load balancer
|
|
#
|
|
# Haproxy::Balancermember <<| listening_service == 'puppet00' |>>
|
|
#
|
|
# Creating the resource for multiple balancer members at once
|
|
# (for single-pass installation of haproxy without requiring a first
|
|
# pass to export the resources if you know the members in advance):
|
|
#
|
|
# haproxy::balancermember { 'haproxy':
|
|
# listening_service => 'puppet00',
|
|
# ports => '8140',
|
|
# server_names => ['server01', 'server02'],
|
|
# ipaddresses => ['192.168.56.200', '192.168.56.201'],
|
|
# options => 'check',
|
|
# }
|
|
#
|
|
# (this resource can be declared anywhere)
|
|
#
|
|
define haproxy::balancermember (
|
|
$listening_service,
|
|
$ports = undef,
|
|
$server_names = $::hostname,
|
|
$ipaddresses = $::ipaddress,
|
|
$ensure = 'present',
|
|
$order = '20',
|
|
$options = '',
|
|
$define_cookies = false,
|
|
$define_backups = false,
|
|
$use_include = $haproxy::params::use_include,
|
|
) {
|
|
|
|
# Template uses $ipaddresses, $server_name, $ports, $option
|
|
concat::fragment { "${listening_service}_balancermember_${name}":
|
|
ensure => $ensure,
|
|
order => $use_include ? {
|
|
true => "01-${name}",
|
|
false => "${order}-${listening_service}-01-${name}",
|
|
},
|
|
target => $use_include ? {
|
|
true => "/etc/haproxy/conf.d/${order}-${name}.cfg",
|
|
false => $::haproxy::config_file,
|
|
},
|
|
content => template('haproxy/haproxy_balancermember.erb'),
|
|
}
|
|
}
|