]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/manifests/config.pp
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / manifests / config.pp
1 # Class: rabbitmq::config
2 # Sets all the configuration values for RabbitMQ and creates the directories for
3 # config and ssl.
4 class rabbitmq::config {
5
6   $admin_enable               = $rabbitmq::admin_enable
7   $cluster_node_type          = $rabbitmq::cluster_node_type
8   $cluster_nodes              = $rabbitmq::cluster_nodes
9   $config                     = $rabbitmq::config
10   $config_cluster             = $rabbitmq::config_cluster
11   $config_path                = $rabbitmq::config_path
12   $config_stomp               = $rabbitmq::config_stomp
13   $default_user               = $rabbitmq::default_user
14   $default_pass               = $rabbitmq::default_pass
15   $env_config                 = $rabbitmq::env_config
16   $env_config_path            = $rabbitmq::env_config_path
17   $erlang_cookie              = $rabbitmq::erlang_cookie
18   $interface                  = $rabbitmq::interface
19   $management_port            = $rabbitmq::management_port
20   $node_ip_address            = $rabbitmq::node_ip_address
21   $plugin_dir                 = $rabbitmq::plugin_dir
22   $rabbitmq_user              = $rabbitmq::rabbitmq_user
23   $rabbitmq_group             = $rabbitmq::rabbitmq_group
24   $rabbitmq_home              = $rabbitmq::rabbitmq_home
25   $port                       = $rabbitmq::port
26   $tcp_keepalive              = $rabbitmq::tcp_keepalive
27   $service_name               = $rabbitmq::service_name
28   $ssl                        = $rabbitmq::ssl
29   $ssl_only                   = $rabbitmq::ssl_only
30   $ssl_cacert                 = $rabbitmq::ssl_cacert
31   $ssl_cert                   = $rabbitmq::ssl_cert
32   $ssl_key                    = $rabbitmq::ssl_key
33   $ssl_port                   = $rabbitmq::ssl_port
34   $ssl_interface              = $rabbitmq::ssl_interface
35   $ssl_management_port        = $rabbitmq::ssl_management_port
36   $ssl_stomp_port             = $rabbitmq::ssl_stomp_port
37   $ssl_verify                 = $rabbitmq::ssl_verify
38   $ssl_fail_if_no_peer_cert   = $rabbitmq::ssl_fail_if_no_peer_cert
39   $ssl_versions               = $rabbitmq::ssl_versions
40   $ssl_ciphers                = $rabbitmq::ssl_ciphers
41   $stomp_port                 = $rabbitmq::stomp_port
42   $ldap_auth                  = $rabbitmq::ldap_auth
43   $ldap_server                = $rabbitmq::ldap_server
44   $ldap_user_dn_pattern       = $rabbitmq::ldap_user_dn_pattern
45   $ldap_other_bind            = $rabbitmq::ldap_other_bind
46   $ldap_use_ssl               = $rabbitmq::ldap_use_ssl
47   $ldap_port                  = $rabbitmq::ldap_port
48   $ldap_log                   = $rabbitmq::ldap_log
49   $ldap_config_variables      = $rabbitmq::ldap_config_variables
50   $wipe_db_on_cookie_change   = $rabbitmq::wipe_db_on_cookie_change
51   $config_variables           = $rabbitmq::config_variables
52   $config_kernel_variables    = $rabbitmq::config_kernel_variables
53   $cluster_partition_handling = $rabbitmq::cluster_partition_handling
54   $file_limit                 = $rabbitmq::file_limit
55   $default_env_variables      =  {
56     'NODE_PORT'        => $port,
57     'NODE_IP_ADDRESS'  => $node_ip_address
58   }
59
60   # Handle env variables.
61   $environment_variables = merge($default_env_variables, $rabbitmq::environment_variables)
62
63   file { '/etc/rabbitmq':
64     ensure => directory,
65     owner  => '0',
66     group  => '0',
67     mode   => '0644',
68   }
69
70   file { '/etc/rabbitmq/ssl':
71     ensure => directory,
72     owner  => '0',
73     group  => '0',
74     mode   => '0644',
75   }
76
77   file { 'rabbitmq.config':
78     ensure  => file,
79     path    => $config_path,
80     content => template($config),
81     owner   => '0',
82     group   => '0',
83     mode    => '0644',
84     notify  => Class['rabbitmq::service'],
85   }
86
87   file { 'rabbitmq-env.config':
88     ensure  => file,
89     path    => $env_config_path,
90     content => template($env_config),
91     owner   => '0',
92     group   => '0',
93     mode    => '0644',
94     notify  => Class['rabbitmq::service'],
95   }
96
97   if $admin_enable {
98     file { 'rabbitmqadmin.conf':
99       ensure  => file,
100       path    => '/etc/rabbitmq/rabbitmqadmin.conf',
101       content => template('rabbitmq/rabbitmqadmin.conf.erb'),
102       owner   => '0',
103       group   => '0',
104       mode    => '0644',
105       require => File['/etc/rabbitmq'],
106     }
107   }
108
109   case $::osfamily {
110     'Debian': {
111       file { '/etc/default/rabbitmq-server':
112         ensure  => file,
113         content => template('rabbitmq/default.erb'),
114         mode    => '0644',
115         owner   => '0',
116         group   => '0',
117         notify  => Class['rabbitmq::service'],
118       }
119     }
120     'RedHat': {
121       if versioncmp($::operatingsystemmajrelease, '7') >= 0 {
122         file { '/etc/systemd/system/rabbitmq-server.service.d':
123           ensure                  => directory,
124           owner                   => '0',
125           group                   => '0',
126           mode                    => '0755',
127           selinux_ignore_defaults => true,
128         } ->
129         file { '/etc/systemd/system/rabbitmq-server.service.d/limits.conf':
130           content => template('rabbitmq/rabbitmq-server.service.d/limits.conf'),
131           owner   => '0',
132           group   => '0',
133           mode    => '0644',
134           notify  => Exec['rabbitmq-systemd-reload'],
135         }
136         exec { 'rabbitmq-systemd-reload':
137           command     => '/usr/bin/systemctl daemon-reload',
138           notify      => Class['Rabbitmq::Service'],
139           refreshonly => true,
140         }
141       } else {
142         file { '/etc/security/limits.d/rabbitmq-server.conf':
143           content => template('rabbitmq/limits.conf'),
144           owner   => '0',
145           group   => '0',
146           mode    => '0644',
147           notify  => Class['Rabbitmq::Service'],
148         }
149       }
150     }
151     default: {
152     }
153   }
154
155   if $config_cluster {
156
157     if $erlang_cookie == undef {
158       fail('You must set the $erlang_cookie value in order to configure clustering.')
159     } else {
160       rabbitmq_erlang_cookie { "${rabbitmq_home}/.erlang.cookie":
161         content        => $erlang_cookie,
162         force          => $wipe_db_on_cookie_change,
163         rabbitmq_user  => $rabbitmq_user,
164         rabbitmq_group => $rabbitmq_group,
165         rabbitmq_home  => $rabbitmq_home,
166         service_name   => $service_name,
167         before         => File['rabbitmq.config'],
168         notify         => Class['rabbitmq::service'],
169       }
170     }
171   }
172 }