diff options
Diffstat (limited to 'manifests/balancermember.pp')
-rw-r--r-- | manifests/balancermember.pp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/manifests/balancermember.pp b/manifests/balancermember.pp new file mode 100644 index 0000000..50e90c0 --- /dev/null +++ b/manifests/balancermember.pp @@ -0,0 +1,86 @@ +# == 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 ripienaar/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::config resource). This must match up with a declared +# haproxy::config resource. +# +# [*balancer_port*] +# A unique port 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. +# +# [*order*] +# The order, or numerical weight, of the fragment created by this defined +# resource type. This is necessary to ensure the fragment is associated +# with the correct listening service instance. +# +# [*server_name*] +# The name of the balancer member server as known to haproxy in the +# listening service's configuration block. This defaults to the +# hostname +# +# [*balancer_ip*] +# The ip address used to contact the balancer member server +# +# [*balancermember_options*] +# An array of options to be specified after the server declaration +# in the listening service's configuration block. +# +# +# === Examples +# +# Exporting the resource for a balancer member: +# +# @@haproxy::balancermember { 'haproxy': +# listening_service => 'puppet00', +# balancer_port => '8140', +# order => '21', +# server_name => $::hostname, +# balancer_ip => $::ipaddress, +# balancermember_options => 'check', +# } +# +# +# Collecting the resource on a load balancer +# +# Haproxy::Balancermember <<| listening_service == 'puppet00' |>> +# +# === Authors +# +# Gary Larizza <gary@puppetlabs.com> +# +define haproxy::balancermember ( + $listening_service, + $balancer_port, + $order = '20', + $server_name = $::hostname, + $balancer_ip = $::ipaddress, + $balancermember_options = '' +) { + concat::fragment { "${listening_service}_balancermember_${name}": + order => $order, + target => '/etc/haproxy/haproxy.cfg', + content => template('haproxy/haproxy_balancermember.erb'), + } +} |