# (This is required for the [autocluster plugin](https://github.com/aweber/rabbitmq-autocluster)
#
# @example 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,
# }
#
# @param admin_enable
# If enabled sets up the management interface/plugin for RabbitMQ.
# This also install the rabbitmqadmin command line tool.
# @param management_enable
# If enabled sets up the management interface/plugin for RabbitMQ.
# NOTE: This does not install the rabbitmqadmin command line tool.
# @param use_config_file_for_plugins
# If enabled the /etc/rabbitmq/enabled_plugins config file is created,
# replacing the use of the rabbitmqplugins provider to enable plugins.
# @param auth_backends
# An array specifying authorization/authentication backend to use. Single quotes should be placed around array entries,
# ex. `['{foo, baz}', 'baz']` Defaults to [rabbit_auth_backend_internal], and if using LDAP defaults to [rabbit_auth_backend_internal,
# rabbit_auth_backend_ldap].
# @param cluster_node_type
# Choose between disc and ram nodes.
# @param cluster_nodes
# An array of nodes for clustering.
# @param cluster_partition_handling
# Value to set for `cluster_partition_handling` RabbitMQ configuration variable.
# @param collect_statistics_interval
# Set the collect_statistics_interval in rabbitmq.config
# @param config
# The file to use as the rabbitmq.config template.
# @param config_additional_variables
# Additional config variables in rabbitmq.config
# @param config_cluster
# Enable or disable clustering support.
# @param config_kernel_variables
# Hash of Erlang kernel configuration variables to set (see [Variables Configurable in rabbitmq.config](#variables-configurable-in-rabbitmq.config)).
# @param config_path
# The path to write the RabbitMQ configuration file to.
# @param config_ranch
# When true, suppress config directives needed for older (<3.6) RabbitMQ versions.
# @param config_management_variables
# Hash of configuration variables for the [Management Plugin](https://www.rabbitmq.com/management.html).
# @param config_stomp
# Enable or disable stomp.
# @param config_shovel
# Enable or disable shovel.
# @param config_shovel_statics
# Hash of static shovel configurations
# @param config_variables
# To set config variables in rabbitmq.config
# @param default_user
# Username to set for the `default_user` in rabbitmq.config.
# @param default_pass
# Password to set for the `default_user` in rabbitmq.config.
# @param delete_guest_user
# Controls whether default guest user is deleted.
# @param env_config
# The template file to use for rabbitmq_env.config.
# @param env_config_path
# The path to write the rabbitmq_env.config file to.
# @param environment_variables
# RabbitMQ Environment Variables in rabbitmq_env.config
# @param erlang_cookie
# 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'.
# @param file_limit
# Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with `$::osfamily == 'Debian'` or `$::osfamily == 'RedHat'`.
# @param heartbeat
# Set the heartbeat timeout interval, default is unset which uses the builtin server defaults of 60 seconds. Setting this
# @param inetrc_config
# Template to use for the inetrc config
# @param inetrc_config_path
# Path of the file to push the inetrc config to.
# @param ipv6
# Whether to listen on ipv6
# @param interface
# Interface to bind to (sets tcp_listeners parameter). By default, bind to all interfaces
# to `0` will disable heartbeats.
# @param key_content
# 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.
# @param ldap_auth
# Set to true to enable LDAP auth.
# @param ldap_server
# LDAP server to use for auth.
# @param ldap_user_dn_pattern
# User DN pattern for LDAP auth.
# @param ldap_other_bind
# How to bind to the LDAP server. Defaults to 'anon'.
# @param ldap_config_variables
# Hash of other LDAP config variables.
# @param ldap_use_ssl
# Set to true to use SSL for the LDAP server.
# @param ldap_port
# Numeric port for LDAP server.
# @param ldap_log
# Set to true to log LDAP auth.
# @param 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.
# @param management_hostname
# The hostname for the RabbitMQ management interface.
# @param management_port
# The port for the RabbitMQ management interface.
# @param management_ip_address
# 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.
# @param management_ssl
# Enable/Disable SSL for the management port. Has an effect only if ssl => true.
# @param node_ip_address
# 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.
# @param package_apt_pin
# Whether to pin the package to a particular source
# @param package_ensure
# Determines the ensure state of the package. Set to installed by default, but could be changed to latest.
# @param 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://www.rabbitmq.com/rabbitmq-release-signing-key.asc for RedHat OS Family and
# https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey for Debian OS Family by default. Note, that `key_content`, if specified, would
# override this parameter for Debian OS family.
# @param package_name
# Name(s) of the package(s) to install
# @param port
# The RabbitMQ port.
+# @param python_package
+# Name of the package required by rabbitmqadmin.
# @param 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.
# It also does not solve the erlang dependency. See https://www.rabbitmq.com/which-erlang.html for a good breakdown of the
# different ways of handling the erlang deps. See also https://github.com/voxpupuli/puppet-rabbitmq/issues/788
# @param service_ensure
# The state of the service.
# @param service_manage
# Determines if the service is managed.
# @param service_name
# The name of the service to manage.
# @param service_restart
# Default defined in param.pp. Whether to restart the service on config change.
# @param ssl
# Configures the service for using SSL.
# @param ssl_cacert
# CA cert path to use for SSL.
# @param ssl_cert
# Cert to use for SSL.
# @param ssl_cert_password
# Password used when generating CSR.
# @param ssl_depth
# SSL verification depth.
# @param ssl_dhfile
# Use this dhparam file [example: generate with `openssl dhparam -out /etc/rabbitmq/ssl/dhparam.pem 2048`
# @param ssl_erl_dist
# Whether to use the erlang package's SSL (relies on the ssl_erl_path fact)
# @param ssl_honor_cipher_order
# Force use of server cipher order
# @param ssl_interface
# Interface for SSL listener to bind to
# @param ssl_key
# Key to use for SSL.
# @param ssl_only
# Configures the service to only use SSL. No cleartext TCP listeners will be created. Requires that ssl => true and
# port => undef
# @param ssl_management_port
# SSL management port.
# @param ssl_port
# SSL port for RabbitMQ
# @param ssl_reuse_sessions
# Reuse ssl sessions
# @param ssl_secure_renegotiate
# Use ssl secure renegotiate
# @param ssl_stomp_port
# SSL stomp port.
# @param ssl_verify
# rabbitmq.config SSL verify setting.
# @param ssl_fail_if_no_peer_cert
# rabbitmq.config `fail_if_no_peer_cert` setting.
# @param ssl_management_verify
# rabbitmq.config SSL verify setting for rabbitmq_management.
# @param ssl_versions
# Choose which SSL versions to enable. Example: `['tlsv1.2', 'tlsv1.1']` Note
# that it is recommended to disable `sslv3 and `tlsv1` to prevent against
# POODLE and BEAST attacks. Please see the
# [RabbitMQ SSL](https://www.rabbitmq.com/ssl.html) documentation for more information.
# @param 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
# @param stomp_port
# The port to use for Stomp.
# @param stomp_ssl_only
# Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be created. Requires setting ssl_stomp_port also.
# @param stomp_ensure
# Enable to install the stomp plugin.
# @param tcp_backlog
# The size of the backlog on TCP connections.
# @param tcp_keepalive
# Enable TCP connection keepalive for RabbitMQ service.
# @param tcp_recbuf
# Corresponds to recbuf in RabbitMQ `tcp_listen_options`
# @param tcp_sndbuf
# Integer, corresponds to sndbuf in RabbitMQ `tcp_listen_options`
# @param wipe_db_on_cookie_change
# Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database.
# @param rabbitmq_user
# OS dependent The system user the rabbitmq daemon runs as.
# @param rabbitmq_group
# OS dependent The system group the rabbitmq daemon runs as.
# @param rabbitmq_home
# OS dependent The home directory of the rabbitmq deamon.
# @param rabbitmqadmin_package
# OS dependent If undef: install rabbitmqadmin via archive, otherwise via package
# @param archive_options
# Extra options to Archive resource to download rabbitmqadmin file
# @param loopback_users
# This option configures a list of users to allow access via the loopback interfaces