Puppet Class: rabbitmq

Inherits:
rabbitmq::params
Inherited by:
rabbitmq::service
Defined in:
manifests/init.pp

Summary

A module to manage RabbitMQ

Overview

rabbitmq

Examples:

Basic usage

include rabbitmq

rabbitmq class

class { 'rabbitmq':
  service_manage    => false,
  port              => '5672',
  delete_guest_user => true,
}

Offline installation from local mirror:


class { 'rabbitmq':
  key_content     => template('openstack/rabbit.pub.key'),
  package_gpg_key => '/tmp/rabbit.pub.key',
}

Use external package key source for any (apt/rpm) package provider:

class { 'rabbitmq':
  package_gpg_key => 'http://www.some_site.some_domain/some_key.pub.key',
}

To use RabbitMQ Environment Variables, use the parameters environment_variables e.g.:


class { 'rabbitmq':
  port                  => '5672',
  environment_variables => {
    'NODENAME'    => 'node01',
    'SERVICENAME' => 'RabbitMQ'
  }
}

Change RabbitMQ Config Variables in rabbitmq.config:


class { 'rabbitmq':
  port             => '5672',
  config_variables => {
    'hipe_compile' => true,
    'frame_max'    => 131072,
    'log_levels'   => "[{connection, info}]"
  }
}

Change Erlang Kernel Config Variables in rabbitmq.config

class { 'rabbitmq':
  port                    => '5672',
  config_kernel_variables => {
    'inet_dist_listen_min' => 9100,
    'inet_dist_listen_max' => 9105,
  }
}

Change Management Plugin Config Variables in rabbitmq.config

class { 'rabbitmq':
  config_management_variables => {
    'rates_mode' => 'basic',
  }
}

Change Additional Config Variables in rabbitmq.config

class { 'rabbitmq':
  config_additional_variables => {
    'autocluster' => '[{consul_service, "rabbit"},{cluster_name, "rabbit"}]',
    'foo'         => '[{bar, "baz"}]'
  }
}
This will result in the following config appended to the config file:
{autocluster, [{consul_service, "rabbit"},{cluster_name, "rabbit"}]},
 {foo, [{bar, "baz"}]}
(This is required for the [autocluster plugin](https://github.com/aweber/rabbitmq-autocluster)

Use RabbitMQ clustering facilities

class { 'rabbitmq':
  config_cluster           => true,
  cluster_nodes            => ['rabbit1', 'rabbit2'],
  cluster_node_type        => 'ram',
  erlang_cookie            => 'A_SECRET_COOKIE_STRING',
  wipe_db_on_cookie_change => true,
}

Parameters:

  • admin_enable (Boolean) (defaults to: $rabbitmq::params::admin_enable)

    If enabled sets up the management interface/plugin for RabbitMQ.

  • auth_backends (Optional[Array]) (defaults to: undef)

    An array specifying authorization/authentication backend to use. Single quotes should be placed around array entries, ex. ['baz', 'baz'] Defaults to [rabbit_auth_backend_internal], and if using LDAP defaults to [rabbit_auth_backend_internal, rabbit_auth_backend_ldap].

  • cluster_node_type (Enum['ram', 'disk', 'disc']) (defaults to: $rabbitmq::params::cluster_node_type)

    Choose between disc and ram nodes.

  • cluster_nodes (Array) (defaults to: $rabbitmq::params::cluster_nodes)

    An array of nodes for clustering.

  • cluster_partition_handling (String) (defaults to: $rabbitmq::params::cluster_partition_handling)

    Value to set for cluster_partition_handling RabbitMQ configuration variable.

  • collect_statistics_interval (Optional[Integer]) (defaults to: undef)

    Set the collect_statistics_interval in rabbitmq.config

  • config (String) (defaults to: $rabbitmq::params::config)

    The file to use as the rabbitmq.config template.

  • config_additional_variables (Hash) (defaults to: $rabbitmq::params::config_additional_variables)

    Additional config variables in rabbitmq.config

  • config_cluster (Boolean) (defaults to: $rabbitmq::params::config_cluster)

    Enable or disable clustering support.

  • config_kernel_variables (Hash) (defaults to: $rabbitmq::params::config_kernel_variables)

    Hash of Erlang kernel configuration variables to set (see Variables Configurable in rabbitmq.config).

  • config_path (Stdlib::Absolutepath) (defaults to: $rabbitmq::params::config_path)

    The path to write the RabbitMQ configuration file to.

  • config_management_variables (Hash) (defaults to: $rabbitmq::params::config_management_variables)

    Hash of configuration variables for the Management Plugin.

  • config_stomp (Boolean) (defaults to: $rabbitmq::params::config_stomp)

    Enable or disable stomp.

  • config_shovel (Boolean) (defaults to: $rabbitmq::params::config_shovel)

    Enable or disable shovel.

  • config_shovel_statics (Hash) (defaults to: $rabbitmq::params::config_shovel_statics)

    Hash of static shovel configurations

  • config_variables (Hash) (defaults to: $rabbitmq::params::config_variables)

    To set config variables in rabbitmq.config

  • default_user (String) (defaults to: $rabbitmq::params::default_user)

    Username to set for the default_user in rabbitmq.config.

  • default_pass (String) (defaults to: $rabbitmq::params::default_pass)

    Password to set for the default_user in rabbitmq.config.

  • delete_guest_user (Boolean) (defaults to: $rabbitmq::params::delete_guest_user)

    Controls whether default guest user is deleted.

  • env_config (String) (defaults to: $rabbitmq::params::env_config)

    The template file to use for rabbitmq_env.config.

  • env_config_path (Stdlib::Absolutepath) (defaults to: $rabbitmq::params::env_config_path)

    The path to write the rabbitmq_env.config file to.

  • environment_variables (Hash) (defaults to: $rabbitmq::params::environment_variables)

    RabbitMQ Environment Variables in rabbitmq_env.config

  • erlang_cookie (Optional[String]) (defaults to: undef)

    The erlang cookie to use for clustering - must be the same between all nodes. This value has no default and must be set explicitly if using clustering. If you run Pacemaker and you don't want to use RabbitMQ buildin cluster, you can set config_cluster to 'False' and set 'erlang_cookie'.

  • file_limit (Variant[Integer[-1,], Enum['unlimited', 'infinity']]) (defaults to: $rabbitmq::params::file_limit)

    Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with $::osfamily == 'Debian' or $::osfamily == 'RedHat'.

  • heartbeat (Optional[Integer]) (defaults to: undef)

    Set the heartbeat timeout interval, default is unset which uses the builtin server defaults of 60 seconds. Setting this

  • inetrc_config (String) (defaults to: $rabbitmq::params::inetrc_config)

    Template to use for the inetrc config

  • inetrc_config_path (Stdlib::Absolutepath) (defaults to: $rabbitmq::params::inetrc_config_path)

    Path of the file to push the inetrc config to.

  • ipv6 (Boolean) (defaults to: $rabbitmq::params::ipv6)

    Whether to listen on ipv6

  • interface (Optional[String]) (defaults to: undef)

    Interface to bind to (sets tcp_listeners parameter). By default, bind to all interfaces to 0 will disable heartbeats.

  • key_content (Optional[String]) (defaults to: undef)

    Uses content method for Debian OS family. Should be a template for apt::source class. Overrides package_gpg_key behavior, if enabled. Undefined by default.

  • ldap_auth (Boolean) (defaults to: $rabbitmq::params::ldap_auth)

    Set to true to enable LDAP auth.

  • ldap_server (String) (defaults to: $rabbitmq::params::ldap_server)

    LDAP server to use for auth.

  • ldap_user_dn_pattern (Optional[String]) (defaults to: $rabbitmq::params::ldap_user_dn_pattern)

    User DN pattern for LDAP auth.

  • ldap_other_bind (String) (defaults to: $rabbitmq::params::ldap_other_bind)

    How to bind to the LDAP server. Defaults to 'anon'.

  • ldap_config_variables (Hash) (defaults to: $rabbitmq::params::ldap_config_variables)

    Hash of other LDAP config variables.

  • ldap_use_ssl (Boolean) (defaults to: $rabbitmq::params::ldap_use_ssl)

    Set to true to use SSL for the LDAP server.

  • ldap_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::ldap_port)

    Numeric port for LDAP server.

  • ldap_log (Boolean) (defaults to: $rabbitmq::params::ldap_log)

    Set to true to log LDAP auth.

  • manage_python (Boolean) (defaults to: $rabbitmq::params::manage_python)

    If enabled, on platforms that don't provide a Python 2 package by default, ensure that the python package is installed (for rabbitmqadmin). This will only apply if admin_enable and service_manage are set.

  • management_hostname (Optional[String]) (defaults to: undef)

    The hostname for the RabbitMQ management interface.

  • management_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::management_port)

    The port for the RabbitMQ management interface.

  • management_ip_address (Optional[String]) (defaults to: undef)

    Allows you to set the IP for management interface to bind to separately. Set to 127.0.0.1 to bind to localhost only, or 0.0.0.0 to bind to all interfaces.

  • management_ssl (Boolean) (defaults to: $rabbitmq::params::management_ssl)

    Enable/Disable SSL for the management port. Has an effect only if ssl => true.

  • node_ip_address (Optional[String]) (defaults to: undef)

    Allows you to set the IP for RabbitMQ service to bind to. Set to 127.0.0.1 to bind to localhost only, or 0.0.0.0 to bind to all interfaces.

  • package_apt_pin (Optional[Variant[Numeric, String]]) (defaults to: undef)

    Whether to pin the package to a particular source

  • package_ensure (String) (defaults to: $rabbitmq::params::package_ensure)

    Determines the ensure state of the package. Set to installed by default, but could be changed to latest.

  • package_gpg_key (Optional[String]) (defaults to: $rabbitmq::params::package_gpg_key)

    RPM package GPG key to import. Uses source method. Should be a URL for Debian/RedHat OS family, or a file name for RedHat OS family. Set to https://packagecloud.io/gpg.key by default. Note, that key_content, if specified, would override this parameter for Debian OS family.

  • package_name (String) (defaults to: $rabbitmq::params::package_name)

    The name of the package to install.

  • port (Integer) (defaults to: $rabbitmq::params::port)

    The RabbitMQ port.

  • repos_ensure (Boolean) (defaults to: $rabbitmq::params::repos_ensure)

    Ensure that a repo with the official (and newer) RabbitMQ package is configured, along with its signing key. Defaults to false (use system packages). This does not ensure that soft dependencies (like EPEL on RHEL systems) are present.

  • service_ensure (Enum['running', 'stopped']) (defaults to: $rabbitmq::params::service_ensure)

    The state of the service.

  • service_manage (Boolean) (defaults to: $rabbitmq::params::service_manage)

    Determines if the service is managed.

  • service_name (String) (defaults to: $rabbitmq::params::service_name)

    The name of the service to manage.

  • ssl (Boolean) (defaults to: $rabbitmq::params::ssl)

    Configures the service for using SSL. port => UNSET

  • ssl_cacert (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    CA cert path to use for SSL.

  • ssl_cert (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Cert to use for SSL.

  • ssl_cert_password (Optional[String]) (defaults to: undef)

    Password used when generating CSR.

  • ssl_depth (Optional[Integer]) (defaults to: undef)

    SSL verification depth.

  • ssl_dhfile (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Use this dhparam file [example: generate with openssl dhparam -out /etc/rabbitmq/ssl/dhparam.pem 2048

  • ssl_erl_dist (Boolean) (defaults to: $rabbitmq::params::ssl_erl_dist)

    Whether to use the erlang package's SSL (relies on the ssl_erl_path fact)

  • ssl_honor_cipher_order (Boolean) (defaults to: $rabbitmq::params::ssl_honor_cipher_order)

    Force use of server cipher order

  • ssl_interface (Optional[String]) (defaults to: undef)

    Interface for SSL listener to bind to

  • ssl_key (Optional[Stdlib::Absolutepath]) (defaults to: undef)

    Key to use for SSL.

  • ssl_only (Boolean) (defaults to: $rabbitmq::params::ssl_only)

    Configures the service to only use SSL. No cleartext TCP listeners will be created. Requires that ssl => true and

  • ssl_management_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::ssl_management_port)

    SSL management port.

  • ssl_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::ssl_port)

    SSL port for RabbitMQ

  • ssl_reuse_sessions (Boolean) (defaults to: $rabbitmq::params::ssl_reuse_sessions)

    Reuse ssl sessions

  • ssl_secure_renegotiate (Boolean) (defaults to: $rabbitmq::params::ssl_secure_renegotiate)

    Use ssl secure renegotiate

  • ssl_stomp_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::ssl_stomp_port)

    SSL stomp port.

  • ssl_verify (Enum['verify_none','verify_peer']) (defaults to: $rabbitmq::params::ssl_verify)

    rabbitmq.config SSL verify setting.

  • ssl_fail_if_no_peer_cert (Boolean) (defaults to: $rabbitmq::params::ssl_fail_if_no_peer_cert)

    rabbitmq.config fail_if_no_peer_cert setting.

  • ssl_management_verify (Enum['verify_none','verify_peer']) (defaults to: $rabbitmq::params::ssl_management_verify)

    rabbitmq.config SSL verify setting for rabbitmq_management.

  • ssl_manaagement_fail_if_no_peer_cert

    rabbitmq.config fail_if_no_peer_cert setting for rabbitmq_management.

  • ssl_versions (Optional[Array]) (defaults to: undef)

    Choose which SSL versions to enable. Example: ['tlsv1.2', 'tlsv1.1'] Note that it is recommended to disable sslv3 andtlsv1` to prevent against POODLE and BEAST attacks. Please see the RabbitMQ SSL documentation for more information.

  • ssl_ciphers (Array) (defaults to: $rabbitmq::params::ssl_ciphers)

    Support only a given list of SSL ciphers. Example: ['dhe_rsa,aes_256_cbc,sha','dhe_dss,aes_256_cbc,sha', 'ecdhe_rsa,aes_256_cbc,sha']. Supported ciphers in your install can be listed with: rabbitmqctl eval 'ssl:cipher_suites().' Functionality can be tested with cipherscan or similar tool: https://github.com/jvehent/cipherscan.git

  • stomp_port (Integer[1, 65535]) (defaults to: $rabbitmq::params::stomp_port)

    The port to use for Stomp.

  • stomp_ssl_only (Boolean) (defaults to: $rabbitmq::params::stomp_ssl_only)

    Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be created. Requires setting ssl_stomp_port also.

  • stomp_ensure (Boolean) (defaults to: $rabbitmq::params::stomp_ensure)

    Enable to install the stomp plugin.

  • tcp_backlog (Integer) (defaults to: $rabbitmq::params::tcp_backlog)

    The size of the backlog on TCP connections.

  • tcp_keepalive (Boolean) (defaults to: $rabbitmq::params::tcp_keepalive)

    Enable TCP connection keepalive for RabbitMQ service.

  • tcp_recbuf (Optional[Integer]) (defaults to: undef)

    Corresponds to recbuf in RabbitMQ tcp_listen_options

  • tcp_sndbuf (Optional[Integer]) (defaults to: undef)

    Integer, corresponds to sndbuf in RabbitMQ tcp_listen_options

  • wipe_db_on_cookie_change (Boolean) (defaults to: $rabbitmq::params::wipe_db_on_cookie_change)

    Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database.

  • rabbitmq_user (String) (defaults to: $rabbitmq::params::rabbitmq_user)

    OS dependent, default defined in param.pp. The system user the rabbitmq daemon runs as.

  • rabbitmq_group (String) (defaults to: $rabbitmq::params::rabbitmq_group)

    OS dependent, default defined in param.pp. The system group the rabbitmq daemon runs as.

  • rabbitmq_home (Stdlib::Absolutepath) (defaults to: $rabbitmq::params::rabbitmq_home)

    OS dependent. default defined in param.pp. The home directory of the rabbitmq deamon.

  • $rabbitmqadmin_package

    OS dependent. default defined in param.pp. If undef: install rabbitmqadmin via archive, otherwise via package

  • config_ranch (Boolean) (defaults to: $rabbitmq::params::config_ranch)
  • package_source (Optional[String]) (defaults to: undef)
  • package_provider (Optional[String]) (defaults to: undef)
  • ssl_management_fail_if_no_peer_cert (Boolean) (defaults to: $rabbitmq::params::ssl_management_fail_if_no_peer_cert)
  • rabbitmqadmin_package (Optional[String]) (defaults to: $rabbitmq::params::rabbitmqadmin_package)


188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
# File 'manifests/init.pp', line 188

class rabbitmq(
  Boolean $admin_enable                                            = $rabbitmq::params::admin_enable,
  Enum['ram', 'disk', 'disc'] $cluster_node_type                   = $rabbitmq::params::cluster_node_type,
  Array $cluster_nodes                                             = $rabbitmq::params::cluster_nodes,
  String $config                                                   = $rabbitmq::params::config,
  Boolean $config_cluster                                          = $rabbitmq::params::config_cluster,
  Stdlib::Absolutepath $config_path                                = $rabbitmq::params::config_path,
  Boolean $config_ranch                                            = $rabbitmq::params::config_ranch,
  Boolean $config_stomp                                            = $rabbitmq::params::config_stomp,
  Boolean $config_shovel                                           = $rabbitmq::params::config_shovel,
  Hash $config_shovel_statics                                      = $rabbitmq::params::config_shovel_statics,
  String $default_user                                             = $rabbitmq::params::default_user,
  String $default_pass                                             = $rabbitmq::params::default_pass,
  Boolean $delete_guest_user                                       = $rabbitmq::params::delete_guest_user,
  String $env_config                                               = $rabbitmq::params::env_config,
  Stdlib::Absolutepath $env_config_path                            = $rabbitmq::params::env_config_path,
  Optional[String] $erlang_cookie                                  = undef,
  Optional[String] $interface                                      = undef,
  Optional[String] $management_ip_address                          = undef,
  Integer[1, 65535] $management_port                               = $rabbitmq::params::management_port,
  Boolean $management_ssl                                          = $rabbitmq::params::management_ssl,
  Optional[String] $management_hostname                            = undef,
  Optional[String] $node_ip_address                                = undef,
  Optional[Variant[Numeric, String]] $package_apt_pin              = undef,
  String $package_ensure                                           = $rabbitmq::params::package_ensure,
  Optional[String] $package_gpg_key                                = $rabbitmq::params::package_gpg_key,
  String $package_name                                             = $rabbitmq::params::package_name,
  Optional[String] $package_source                                 = undef,
  Optional[String] $package_provider                               = undef,
  Boolean $repos_ensure                                            = $rabbitmq::params::repos_ensure,
  Boolean $manage_python                                           = $rabbitmq::params::manage_python,
  String $rabbitmq_user                                            = $rabbitmq::params::rabbitmq_user,
  String $rabbitmq_group                                           = $rabbitmq::params::rabbitmq_group,
  Stdlib::Absolutepath $rabbitmq_home                              = $rabbitmq::params::rabbitmq_home,
  Integer $port                                                    = $rabbitmq::params::port,
  Boolean $tcp_keepalive                                           = $rabbitmq::params::tcp_keepalive,
  Integer $tcp_backlog                                             = $rabbitmq::params::tcp_backlog,
  Optional[Integer] $tcp_sndbuf                                    = undef,
  Optional[Integer] $tcp_recbuf                                    = undef,
  Optional[Integer] $heartbeat                                     = undef,
  Enum['running', 'stopped'] $service_ensure                       = $rabbitmq::params::service_ensure,
  Boolean $service_manage                                          = $rabbitmq::params::service_manage,
  String $service_name                                             = $rabbitmq::params::service_name,
  Boolean $ssl                                                     = $rabbitmq::params::ssl,
  Boolean $ssl_only                                                = $rabbitmq::params::ssl_only,
  Optional[Stdlib::Absolutepath] $ssl_cacert                       = undef,
  Optional[Stdlib::Absolutepath] $ssl_cert                         = undef,
  Optional[Stdlib::Absolutepath] $ssl_key                          = undef,
  Optional[Integer] $ssl_depth                                     = undef,
  Optional[String] $ssl_cert_password                              = undef,
  Integer[1, 65535] $ssl_port                                      = $rabbitmq::params::ssl_port,
  Optional[String] $ssl_interface                                  = undef,
  Integer[1, 65535] $ssl_management_port                           = $rabbitmq::params::ssl_management_port,
  Integer[1, 65535] $ssl_stomp_port                                = $rabbitmq::params::ssl_stomp_port,
  Enum['verify_none','verify_peer'] $ssl_verify                    = $rabbitmq::params::ssl_verify,
  Boolean $ssl_fail_if_no_peer_cert                                = $rabbitmq::params::ssl_fail_if_no_peer_cert,
  Enum['verify_none','verify_peer'] $ssl_management_verify         = $rabbitmq::params::ssl_management_verify,
  Boolean $ssl_management_fail_if_no_peer_cert                     = $rabbitmq::params::ssl_management_fail_if_no_peer_cert,
  Optional[Array] $ssl_versions                                    = undef,
  Boolean $ssl_secure_renegotiate                                  = $rabbitmq::params::ssl_secure_renegotiate,
  Boolean $ssl_reuse_sessions                                      = $rabbitmq::params::ssl_reuse_sessions,
  Boolean $ssl_honor_cipher_order                                  = $rabbitmq::params::ssl_honor_cipher_order,
  Optional[Stdlib::Absolutepath] $ssl_dhfile                       = undef,
  Array $ssl_ciphers                                               = $rabbitmq::params::ssl_ciphers,
  Boolean $stomp_ensure                                            = $rabbitmq::params::stomp_ensure,
  Boolean $ldap_auth                                               = $rabbitmq::params::ldap_auth,
  String $ldap_server                                              = $rabbitmq::params::ldap_server,
  Optional[String] $ldap_user_dn_pattern                           = $rabbitmq::params::ldap_user_dn_pattern,
  String $ldap_other_bind                                          = $rabbitmq::params::ldap_other_bind,
  Boolean $ldap_use_ssl                                            = $rabbitmq::params::ldap_use_ssl,
  Integer[1, 65535] $ldap_port                                     = $rabbitmq::params::ldap_port,
  Boolean $ldap_log                                                = $rabbitmq::params::ldap_log,
  Hash $ldap_config_variables                                      = $rabbitmq::params::ldap_config_variables,
  Integer[1, 65535] $stomp_port                                    = $rabbitmq::params::stomp_port,
  Boolean $stomp_ssl_only                                          = $rabbitmq::params::stomp_ssl_only,
  Boolean $wipe_db_on_cookie_change                                = $rabbitmq::params::wipe_db_on_cookie_change,
  String $cluster_partition_handling                               = $rabbitmq::params::cluster_partition_handling,
  Variant[Integer[-1,], Enum['unlimited', 'infinity']] $file_limit = $rabbitmq::params::file_limit,
  Hash $environment_variables                                      = $rabbitmq::params::environment_variables,
  Hash $config_variables                                           = $rabbitmq::params::config_variables,
  Hash $config_kernel_variables                                    = $rabbitmq::params::config_kernel_variables,
  Hash $config_management_variables                                = $rabbitmq::params::config_management_variables,
  Hash $config_additional_variables                                = $rabbitmq::params::config_additional_variables,
  Optional[Array] $auth_backends                                   = undef,
  Optional[String] $key_content                                    = undef,
  Optional[Integer] $collect_statistics_interval                   = undef,
  Boolean $ipv6                                                    = $rabbitmq::params::ipv6,
  String $inetrc_config                                            = $rabbitmq::params::inetrc_config,
  Stdlib::Absolutepath $inetrc_config_path                         = $rabbitmq::params::inetrc_config_path,
  Boolean $ssl_erl_dist                                            = $rabbitmq::params::ssl_erl_dist,
  Optional[String] $rabbitmqadmin_package                          = $rabbitmq::params::rabbitmqadmin_package,
) inherits rabbitmq::params {

  if $ssl_only and ! $ssl {
    fail('$ssl_only => true requires that $ssl => true')
  }

  if $config_stomp and $stomp_ssl_only and ! $ssl_stomp_port  {
    fail('$stomp_ssl_only requires that $ssl_stomp_port be set')
  }

  if $ssl_versions {
    unless $ssl {
      fail('$ssl_versions requires that $ssl => true')
    }
  }

  if $repos_ensure {
    case $facts['os']['family'] {
      'RedHat': {
        contain rabbitmq::repo::rhel
      }
      'Debian': {
        contain rabbitmq::repo::apt
      }
      default: {
      }
    }
  }

  contain rabbitmq::install
  contain rabbitmq::config
  contain rabbitmq::service
  contain rabbitmq::management

  if $admin_enable and $service_manage {
    include 'rabbitmq::install::rabbitmqadmin'

    rabbitmq_plugin { 'rabbitmq_management':
      ensure   => present,
      notify   => Class['rabbitmq::service'],
      provider => 'rabbitmqplugins',
    }

    Class['rabbitmq::service'] -> Class['rabbitmq::install::rabbitmqadmin']
    Class['rabbitmq::install::rabbitmqadmin'] -> Rabbitmq_exchange<| |>
  }

  if $stomp_ensure {
    rabbitmq_plugin { 'rabbitmq_stomp':
      ensure => present,
      notify => Class['rabbitmq::service'],
    }
  }

  if ($ldap_auth) {
    rabbitmq_plugin { 'rabbitmq_auth_backend_ldap':
      ensure => present,
      notify => Class['rabbitmq::service'],
    }
  }

  if ($config_shovel) {
    rabbitmq_plugin { 'rabbitmq_shovel':
      ensure   => present,
      notify   => Class['rabbitmq::service'],
      provider => 'rabbitmqplugins',
    }

    if ($admin_enable) {
      rabbitmq_plugin { 'rabbitmq_shovel_management':
        ensure   => present,
        notify   => Class['rabbitmq::service'],
        provider => 'rabbitmqplugins',
      }
    }
  }

  Class['rabbitmq::install']
  -> Class['rabbitmq::config']
  ~> Class['rabbitmq::service']
  -> Class['rabbitmq::management']

  # Make sure the various providers have their requirements in place.
  Class['rabbitmq::install'] -> Rabbitmq_plugin<| |>

}