Add manage_service parameter for corosync
[puppet_haproxy.git] / manifests / init.pp
1 # == Class: puppet-haproxy
2 #
3 # A Puppet module, using storeconfigs, to model an haproxy configuration.
4 # Currently VERY limited - assumes Redhat/CentOS setup. Pull requests accepted!
5 #
6 # === Requirement/Dependencies:
7 #
8 # Currently requires the ripienaar/concat module on the Puppet Forge and
9 #  uses storeconfigs on the Puppet Master to export/collect resources
10 #  from all balancer members.
11 #
12 # === Parameters
13 #
14 # [*enable*]
15 #   Chooses whether haproxy should be installed or ensured absent.
16 #   Currently ONLY accepts valid boolean true/false values.
17 #
18 # [*haproxy_global_options*]
19 #   A hash of all the haproxy global options. If you want to specify more
20 #    than one option (i.e. multiple timeout or stats options), pass those
21 #    options as an array and you will get a line for each of them in the
22 #    resultant haproxy.cfg file.
23 #
24 # [*haproxy_defaults_options*]
25 #   A hash of all the haproxy defaults options. If you want to specify more
26 #    than one option (i.e. multiple timeout or stats options), pass those
27 #    options as an array and you will get a line for each of them in the
28 #    resultant haproxy.cfg file.
29 #
30 #
31 # === Examples
32 #
33 #  class { 'haproxy':
34 #    enable                   => true,
35 #    haproxy_global_options   => {
36 #      'log'     => "${::ipaddress} local0",
37 #      'chroot'  => '/var/lib/haproxy',
38 #      'pidfile' => '/var/run/haproxy.pid',
39 #      'maxconn' => '4000',
40 #      'user'    => 'haproxy',
41 #      'group'   => 'haproxy',
42 #      'daemon'  => '',
43 #      'stats'   => 'socket /var/lib/haproxy/stats'
44 #    },
45 #    haproxy_defaults_options => {
46 #      'log'     => 'global',
47 #      'stats'   => 'enable',
48 #      'option'  => 'redispatch',
49 #      'retries' => '3',
50 #      'timeout' => [
51 #        'http-request 10s',
52 #        'queue 1m',
53 #        'connect 10s',
54 #        'client 1m',
55 #        'server 1m',
56 #        'check 10s'
57 #      ],
58 #      'maxconn' => '8000'
59 #    },
60 #  }
61 #
62 # === Authors
63 #
64 # Gary Larizza <gary@puppetlabs.com>
65 #
66 class haproxy (
67   $manage_service           = true,
68   $enable                   = true,
69   $haproxy_global_options   = $haproxy::data::haproxy_global_options,
70   $haproxy_defaults_options = $haproxy::data::haproxy_defaults_options
71 ) inherits haproxy::data {
72   include concat::setup
73
74   package { 'haproxy':
75     ensure  => $enable ? {
76       true  => present,
77       false => absent,
78     },
79     name    => 'haproxy',
80   }
81
82   if $enable {
83     concat { '/etc/haproxy/haproxy.cfg':
84       owner   => '0',
85       group   => '0',
86       mode    => '0644',
87       require => Package['haproxy'],
88       notify  => Service['haproxy'],
89     }
90
91     # Simple Header
92     concat::fragment { '00-header':
93       target  => '/etc/haproxy/haproxy.cfg',
94       order   => '01',
95       content => "# This file managed by Puppet\n",
96     }
97
98     # Most of the variables are used inside the haproxy-base.cfg.erb template
99     concat::fragment { 'haproxy-base':
100       target  => '/etc/haproxy/haproxy.cfg',
101       order   => '10',
102       content => template('haproxy/haproxy-base.cfg.erb'),
103     }
104
105     if ($::osfamily == 'Debian') {
106       file { '/etc/default/haproxy':
107         content => 'ENABLED=1',
108         require => Package['haproxy'],
109         before  => Service['haproxy'],
110       }
111     }
112
113     file { $haproxy_global_options['chroot']:
114       ensure => directory,
115       before => Service['haproxy'],
116     }
117
118   }
119
120   if $manage_service {
121     service { 'haproxy':
122       ensure     => $enable ? {
123         true  => running,
124         false => stopped,
125       },
126       enable     => $enable ? {
127         true  => true,
128         false => false,
129       },
130       name       => 'haproxy',
131       hasrestart => true,
132       hasstatus  => true,
133       require    => [
134         Concat['/etc/haproxy/haproxy.cfg'],
135         File[$haproxy_global_options['chroot']],
136       ],
137     }
138   }
139 }