summaryrefslogtreecommitdiff
path: root/manifests/config.pp
blob: 5825dd0ef8ca2d53d533a685401805d372739eb6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# == Define Resource Type: haproxy::config
#
# This type will setup a listening service configuration block inside
#  the haproxy.cfg file on an haproxy load balancer. Each listening service
#  configuration needs one or more load balancer member server (that can be
#  declared with the haproxy::balancermember defined resource type). Using
#  storeconfigs, you can export the haproxy::balancermember resources on all
#  load balancer member servers, and then collect them on a single haproxy
#  load balancer server.
#
# === 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 namevar of the defined resource type is the listening service's name.
#     This name goes right after the 'listen' statement in haproxy.cfg
#
# [*virtual_ip_port*]
#    A unique port, or a port range for which the proxy will accept connections
#     for the ip address specified in the virtual_ip parameter.
#
# [*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.
#
# [*virtual_ip*]
#    The ip address the proxy binds to. Empty addresses, '*', and '0.0.0.0'
#     mean that the proxy listens to all valid addresses on the system.
#
# [*mode*]
#    The mode of operation for the listening service. Valid values are 'tcp',
#     HTTP', and 'health'.
#
# [*haproxy_config_options*]
#    A hash of options that are inserted into the listening service
#     configuration block.
#
#
# === Examples
#
#  Exporting the resource for a balancer member:
#
#  haproxy::config { 'puppet00':
#    order                  => '20',
#    virtual_ip             => $::ipaddress,
#    virtual_ip_port        => '18140',
#    mode                   => 'tcp',
#    haproxy_config_options => {'option' => ['tcplog', 'ssl-hello-chk'],
#                               'balance' => 'roundrobin'},
#  }
#
# === Authors
#
# Gary Larizza <gary@puppetlabs.com>
#
define haproxy::config (
  $virtual_ip_port,
  $order                     = '20',
  $virtual_ip                = $::ipaddress,
  $mode                      = 'tcp',
  $haproxy_config_options    = {'option' => ['tcplog',
                                            'ssl-hello-chk'],
                                'balance' => 'roundrobin'},
) {
  concat::fragment { "${name}_config_block":
    order   => $order,
    target  => '/etc/haproxy/haproxy.cfg',
    content => template('haproxy/haproxy_config_block.erb'),
  }

  Haproxy::Balancermember <<| listening_service == $name |>>
}