Rename `haproxy_config_options` parameter to `config_options`
[puppet_haproxy.git] / manifests / config.pp
1 # == Define Resource Type: haproxy::config
2 #
3 # This type will setup a listening service configuration block inside
4 #  the haproxy.cfg file on an haproxy load balancer. Each listening service
5 #  configuration needs one or more load balancer member server (that can be
6 #  declared with the haproxy::balancermember defined resource type). Using
7 #  storeconfigs, you can export the haproxy::balancermember resources on all
8 #  load balancer member servers, and then collect them on a single haproxy
9 #  load balancer server.
10 #
11 # === Requirement/Dependencies:
12 #
13 # Currently requires the ripienaar/concat module on the Puppet Forge and
14 #  uses storeconfigs on the Puppet Master to export/collect resources
15 #  from all balancer members.
16 #
17 # === Parameters
18 #
19 # [*name*]
20 #    The namevar of the defined resource type is the listening service's name.
21 #     This name goes right after the 'listen' statement in haproxy.cfg
22 #
23 # [*ports*]
24 #    Ports on which the proxy will listen for connections on the ip address
25 #    specified in the virtual_ip parameter. Accepts either a single string or
26 #    an array of strings which may be a unique port or a hyphenated port range.
27 #
28 # [*order*]
29 #    The order, or numerical weight, of the fragment created by this defined
30 #     resource type. This is necessary to ensure the fragment is associated
31 #     with the correct listening service instance.
32 #
33 # [*virtual_ip*]
34 #    The ip address the proxy binds to. Empty addresses, '*', and '0.0.0.0'
35 #     mean that the proxy listens to all valid addresses on the system.
36 #
37 # [*mode*]
38 #    The mode of operation for the listening service. Valid values are 'tcp',
39 #     HTTP', and 'health'.
40 #
41 # [*config_options*]
42 #    A hash of options that are inserted into the listening service
43 #     configuration block.
44 #
45 # [*collect_exported*]
46 #    Boolean, default 'true'. True means 'collect exported @@balancermember resources'
47 #    (for the case when every balancermember node exports itself), false means
48 #    'rely on the existing declared balancermember resources' (for the case when you 
49 #    know the full set of balancermembers in advance and use haproxy::balancermember 
50 #    with array arguments, which allows you to deploy everything in 1 run)
51 #
52 #
53 # === Examples
54 #
55 #  Exporting the resource for a balancer member:
56 #
57 #  haproxy::config { 'puppet00':
58 #    order                  => '20',
59 #    virtual_ip             => $::ipaddress,
60 #    virtual_ip_port        => '18140',
61 #    mode                   => 'tcp',
62 #    haproxy_config_options => {'option' => ['tcplog', 'ssl-hello-chk'],
63 #                               'balance' => 'roundrobin'},
64 #  }
65 #
66 # === Authors
67 #
68 # Gary Larizza <gary@puppetlabs.com>
69 #
70 define haproxy::config (
71   $ports,
72   $order            = '20',
73   $virtual_ip       = $::ipaddress,
74   $mode             = 'tcp',
75   $collect_exported = true,
76   $config_options   = {
77     'option' => [
78       'tcplog',
79       'ssl-hello-chk'
80     ],
81     'balance' => 'roundrobin'
82   }
83 ) {
84   concat::fragment { "${name}_config_block":
85     order   => $order,
86     target  => '/etc/haproxy/haproxy.cfg',
87     content => template('haproxy/haproxy_config_block.erb'),
88   }
89
90   if $collect_exported {
91     Haproxy::Balancermember <<| listening_service == $name |>>
92   }
93   # else: the resources have been created and they introduced their
94   # concat fragments. We don't have to do anything about them.
95 }