Defined Type: haproxy::balancermember

Defined in:
manifests/balancermember.pp

Overview

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.

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)

Parameters:

  • listening_service (Any)
  • ports (Any)
  • server_names (Any) (defaults to: $::hostname)
  • ipaddresses (Any) (defaults to: $::ipaddress)
  • ensure (Any) (defaults to: 'present')
  • options (Any) (defaults to: '')
  • define_cookies (Any) (defaults to: false)


89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'manifests/balancermember.pp', line 89

define haproxy::balancermember (
  $listening_service,
  $ports,
  $server_names = $::hostname,
  $ipaddresses  = $::ipaddress,
  $ensure       = 'present',
  $options      = '',
  $define_cookies = false
) {

  # Template uses $ipaddresses, $server_name, $ports, $option
  concat::fragment { "${listening_service}_balancermember_${name}":
    order   => "20-${listening_service}-01-${name}",
    ensure  => $ensure,
    target  => '/etc/haproxy/haproxy.cfg',
    content => template('haproxy/haproxy_balancermember.erb'),
  }
}