]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/rabbitmq/manifests/init.pp
ssl listeners for rabbit
[dsa-puppet.git] / modules / rabbitmq / manifests / init.pp
1 # == Class: rabbitmq
2 #
3 # Top level class for all things rabbitmq
4 #
5 class rabbitmq (
6         $cluster=false,
7         $clustermembers=[],
8         $clustercookie='',
9         $delete_guest_user=false,
10         $rabbit_num_ofiles=4096,
11         $master=''
12 ) {
13         include rabbitmq::config
14
15         package { 'rabbitmq-server':
16                 ensure  => installed,
17         }
18
19         service { 'rabbitmq-server':
20                 ensure  => running,
21                 enable  => true,
22                 require => Package['rabbitmq-server']
23         }
24
25         Service['rabbitmq-server'] -> Rabbitmq_user <| |>
26         Service['rabbitmq-server'] -> Rabbitmq_vhost <| |>
27         Service['rabbitmq-server'] -> Rabbitmq_user_permissions <| |>
28
29         concat::fragment { 'rabbitmq_main_conf':
30                 target  => '/etc/rabbitmq/rabbitmq.config',
31                 order   => 00,
32                 content => template('rabbitmq/rabbitmq.conf.erb'),
33         }
34
35         concat::fragment { 'rabbit_foot':
36                 target  => '/etc/rabbitmq/rabbitmq.config',
37                 order   => 50,
38                 content => "]}\n"
39         }
40
41         concat::fragment { 'rabbitmq_conf_foot':
42                 target  => '/etc/rabbitmq/rabbitmq.config',
43                 order   => 99,
44                 content => "].\n"
45         }
46
47         file { '/etc/rabbitmq/rabbitmq.conf.d/':
48                 ensure  => directory,
49                 require => Package['rabbitmq-server']
50         }
51
52         file { '/etc/rabbitmq/rabbitmq.conf.d/ulimit.conf':
53                 content => template('rabbitmq/rabbitmq.ulimit.erb'),
54                 require => [ Package['rabbitmq-server'], File['/etc/rabbitmq/rabbitmq.conf.d/'] ],
55                 notify  => Service['rabbitmq-server']
56         }
57
58         if $cluster {
59                 if $clustercookie {
60                         file { '/var/lib/rabbitmq':
61                                 ensure => directory,
62                                 mode   => '0755',
63                                 owner  => rabbitmq,
64                                 group  => rabbitmq,
65                         }
66
67                         file { '/var/lib/rabbitmq/.erlang.cookie':
68                                 content => $clustercookie,
69                                 mode    => '0500',
70                                 owner   => rabbitmq,
71                                 group   => rabbitmq,
72                                 before  => Package['rabbitmq-server'],
73                                 notify  => Service['rabbitmq-server']
74                         }
75                 }
76
77                 if $::hostname != $master {
78                         exec { 'reset_mq':
79                                 command => 'rabbitmqctl stop_app && rabbitmqctl reset > /var/lib/rabbitmq/.node_reset',
80                                 path    => '/usr/bin:/bin:/usr/sbin:/sbin',
81                                 creates => '/var/lib/rabbitmq/.node_reset',
82                                 require => Package['rabbitmq-server'],
83                                 notify  => Service['rabbitmq-server']
84                         }
85                         Exec['reset_mq'] -> Rabbitmq_user <| |>
86                         Exec['reset_mq'] -> Rabbitmq_vhost <| |>
87                         Exec['reset_mq'] -> Rabbitmq_user_permissions <| |>
88                 }
89         }
90
91         if $delete_guest_user {
92                 rabbitmq_user { 'guest':
93                         ensure   => absent,
94                         provider => 'rabbitmqctl',
95                 }
96         }
97
98         site::limit { 'rabbitmq_openfiles':
99                 limit_user  => rabbitmq,
100                 limit_value => $rabbit_num_ofiles,
101                 notify      => Service['rabbitmq-server']
102         }
103 }