From 119108d84620806a34d697dd65e57da2a109f529 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=B4me=20LOYET?=
<822436+fatpat@users.noreply.github.com>
Date: Fri, 17 Feb 2023 09:51:42 +0100
Subject: [PATCH] cluster: add local_node settings
When overriding local node name (using NODENAME environment variable),
clustering does not work as tinit_node is tested again hostname or
fqdn. By adding the optional local_node to specify which node is the
current node we can fix this issue.
Use case: a server with a public and a private interface, rabbitmq
cluster nodes communicates through the private interface while hostname
and fqdn resolves to the public interface (and that can't be changed
because of other dependencies on the server). The only solution is to
use dedictated name for the private interface.
---
REFERENCE.md | 923 +++++++++++-------
.../provider/rabbitmq_cluster/rabbitmqctl.rb | 3 +-
lib/puppet/type/rabbitmq_cluster.rb | 5 +
manifests/init.pp | 1 +
spec/acceptance/clustering_spec.rb | 21 +
.../unit/puppet/type/rabbitmq_cluster_spec.rb | 10 +
6 files changed, 611 insertions(+), 352 deletions(-)
diff --git a/REFERENCE.md b/REFERENCE.md
index 36dfe5830..936579758 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -1,15 +1,16 @@
# Reference
+
## Table of Contents
-**Classes**
+### Classes
-_Public Classes_
+#### Public Classes
* [`rabbitmq`](#rabbitmq): A module to manage RabbitMQ
-_Private Classes_
+#### Private Classes
* `rabbitmq::config`: Sets all the configuration values for RabbitMQ and creates the directories for config and ssl.
* `rabbitmq::install`: Ensures that rabbitmq-server exists
@@ -19,7 +20,7 @@ _Private Classes_
* `rabbitmq::repo::rhel`: Makes sure that the Packagecloud repo is installed
* `rabbitmq::service`: This class manages the rabbitmq server service itself.
-**Resource types**
+### Resource types
* [`rabbitmq_binding`](#rabbitmq_binding): Native type for managing rabbitmq bindings rabbitmq_binding { 'binding 1': ensure => present, source => 'myexchange'
* [`rabbitmq_cluster`](#rabbitmq_cluster): Native type for managing rabbitmq cluster
@@ -35,7 +36,7 @@ _Private Classes_
## Classes
-### rabbitmq
+### `rabbitmq`
A module to manage RabbitMQ
@@ -191,9 +192,116 @@ class { 'rabbitmq':
#### Parameters
-The following parameters are available in the `rabbitmq` class.
-
-##### `admin_enable`
+The following parameters are available in the `rabbitmq` class:
+
+* [`admin_enable`](#-rabbitmq--admin_enable)
+* [`management_enable`](#-rabbitmq--management_enable)
+* [`use_config_file_for_plugins`](#-rabbitmq--use_config_file_for_plugins)
+* [`plugins`](#-rabbitmq--plugins)
+* [`auth_backends`](#-rabbitmq--auth_backends)
+* [`cluster`](#-rabbitmq--cluster)
+* [`cluster_node_type`](#-rabbitmq--cluster_node_type)
+* [`cluster_nodes`](#-rabbitmq--cluster_nodes)
+* [`cluster_partition_handling`](#-rabbitmq--cluster_partition_handling)
+* [`collect_statistics_interval`](#-rabbitmq--collect_statistics_interval)
+* [`config`](#-rabbitmq--config)
+* [`config_additional_variables`](#-rabbitmq--config_additional_variables)
+* [`config_cluster`](#-rabbitmq--config_cluster)
+* [`config_kernel_variables`](#-rabbitmq--config_kernel_variables)
+* [`config_path`](#-rabbitmq--config_path)
+* [`config_ranch`](#-rabbitmq--config_ranch)
+* [`config_management_variables`](#-rabbitmq--config_management_variables)
+* [`config_stomp`](#-rabbitmq--config_stomp)
+* [`config_shovel`](#-rabbitmq--config_shovel)
+* [`config_shovel_statics`](#-rabbitmq--config_shovel_statics)
+* [`config_variables`](#-rabbitmq--config_variables)
+* [`default_user`](#-rabbitmq--default_user)
+* [`default_pass`](#-rabbitmq--default_pass)
+* [`delete_guest_user`](#-rabbitmq--delete_guest_user)
+* [`env_config`](#-rabbitmq--env_config)
+* [`env_config_path`](#-rabbitmq--env_config_path)
+* [`environment_variables`](#-rabbitmq--environment_variables)
+* [`erlang_cookie`](#-rabbitmq--erlang_cookie)
+* [`file_limit`](#-rabbitmq--file_limit)
+* [`oom_score_adj`](#-rabbitmq--oom_score_adj)
+* [`heartbeat`](#-rabbitmq--heartbeat)
+* [`inetrc_config`](#-rabbitmq--inetrc_config)
+* [`inetrc_config_path`](#-rabbitmq--inetrc_config_path)
+* [`ipv6`](#-rabbitmq--ipv6)
+* [`interface`](#-rabbitmq--interface)
+* [`key_content`](#-rabbitmq--key_content)
+* [`ldap_auth`](#-rabbitmq--ldap_auth)
+* [`ldap_server`](#-rabbitmq--ldap_server)
+* [`ldap_user_dn_pattern`](#-rabbitmq--ldap_user_dn_pattern)
+* [`ldap_other_bind`](#-rabbitmq--ldap_other_bind)
+* [`ldap_config_variables`](#-rabbitmq--ldap_config_variables)
+* [`ldap_use_ssl`](#-rabbitmq--ldap_use_ssl)
+* [`ldap_port`](#-rabbitmq--ldap_port)
+* [`ldap_log`](#-rabbitmq--ldap_log)
+* [`manage_python`](#-rabbitmq--manage_python)
+* [`management_hostname`](#-rabbitmq--management_hostname)
+* [`management_port`](#-rabbitmq--management_port)
+* [`management_ip_address`](#-rabbitmq--management_ip_address)
+* [`management_ssl`](#-rabbitmq--management_ssl)
+* [`node_ip_address`](#-rabbitmq--node_ip_address)
+* [`package_apt_pin`](#-rabbitmq--package_apt_pin)
+* [`package_ensure`](#-rabbitmq--package_ensure)
+* [`package_gpg_key`](#-rabbitmq--package_gpg_key)
+* [`repo_gpg_key`](#-rabbitmq--repo_gpg_key)
+* [`package_name`](#-rabbitmq--package_name)
+* [`port`](#-rabbitmq--port)
+* [`python_package`](#-rabbitmq--python_package)
+* [`repos_ensure`](#-rabbitmq--repos_ensure)
+* [`service_ensure`](#-rabbitmq--service_ensure)
+* [`service_manage`](#-rabbitmq--service_manage)
+* [`service_name`](#-rabbitmq--service_name)
+* [`service_restart`](#-rabbitmq--service_restart)
+* [`ssl`](#-rabbitmq--ssl)
+* [`ssl_cacert`](#-rabbitmq--ssl_cacert)
+* [`ssl_cert`](#-rabbitmq--ssl_cert)
+* [`ssl_cert_password`](#-rabbitmq--ssl_cert_password)
+* [`ssl_depth`](#-rabbitmq--ssl_depth)
+* [`ssl_dhfile`](#-rabbitmq--ssl_dhfile)
+* [`ssl_erl_dist`](#-rabbitmq--ssl_erl_dist)
+* [`ssl_honor_cipher_order`](#-rabbitmq--ssl_honor_cipher_order)
+* [`ssl_interface`](#-rabbitmq--ssl_interface)
+* [`ssl_key`](#-rabbitmq--ssl_key)
+* [`ssl_only`](#-rabbitmq--ssl_only)
+* [`ssl_management_port`](#-rabbitmq--ssl_management_port)
+* [`ssl_management_cacert`](#-rabbitmq--ssl_management_cacert)
+* [`ssl_management_cert`](#-rabbitmq--ssl_management_cert)
+* [`ssl_management_key`](#-rabbitmq--ssl_management_key)
+* [`ssl_port`](#-rabbitmq--ssl_port)
+* [`ssl_reuse_sessions`](#-rabbitmq--ssl_reuse_sessions)
+* [`ssl_secure_renegotiate`](#-rabbitmq--ssl_secure_renegotiate)
+* [`ssl_stomp_port`](#-rabbitmq--ssl_stomp_port)
+* [`ssl_verify`](#-rabbitmq--ssl_verify)
+* [`ssl_fail_if_no_peer_cert`](#-rabbitmq--ssl_fail_if_no_peer_cert)
+* [`ssl_management_verify`](#-rabbitmq--ssl_management_verify)
+* [`ssl_versions`](#-rabbitmq--ssl_versions)
+* [`ssl_ciphers`](#-rabbitmq--ssl_ciphers)
+* [`ssl_crl_check`](#-rabbitmq--ssl_crl_check)
+* [`ssl_crl_cache_hash_dir`](#-rabbitmq--ssl_crl_cache_hash_dir)
+* [`ssl_crl_cache_http_timeout`](#-rabbitmq--ssl_crl_cache_http_timeout)
+* [`stomp_port`](#-rabbitmq--stomp_port)
+* [`stomp_ssl_only`](#-rabbitmq--stomp_ssl_only)
+* [`stomp_ensure`](#-rabbitmq--stomp_ensure)
+* [`tcp_backlog`](#-rabbitmq--tcp_backlog)
+* [`tcp_keepalive`](#-rabbitmq--tcp_keepalive)
+* [`tcp_recbuf`](#-rabbitmq--tcp_recbuf)
+* [`tcp_sndbuf`](#-rabbitmq--tcp_sndbuf)
+* [`wipe_db_on_cookie_change`](#-rabbitmq--wipe_db_on_cookie_change)
+* [`rabbitmq_user`](#-rabbitmq--rabbitmq_user)
+* [`rabbitmq_group`](#-rabbitmq--rabbitmq_group)
+* [`rabbitmq_home`](#-rabbitmq--rabbitmq_home)
+* [`rabbitmqadmin_package`](#-rabbitmq--rabbitmqadmin_package)
+* [`archive_options`](#-rabbitmq--archive_options)
+* [`loopback_users`](#-rabbitmq--loopback_users)
+* [`package_source`](#-rabbitmq--package_source)
+* [`package_provider`](#-rabbitmq--package_provider)
+* [`ssl_management_fail_if_no_peer_cert`](#-rabbitmq--ssl_management_fail_if_no_peer_cert)
+
+##### `admin_enable`
Data type: `Boolean`
@@ -202,7 +310,7 @@ This will also install the rabbitmqadmin command line tool.
Default value: `true`
-##### `management_enable`
+##### `management_enable`
Data type: `Boolean`
@@ -211,7 +319,7 @@ NOTE: This does not install the rabbitmqadmin command line tool.
Default value: `false`
-##### `use_config_file_for_plugins`
+##### `use_config_file_for_plugins`
Data type: `Boolean`
@@ -220,15 +328,15 @@ replacing the use of the rabbitmqplugins provider to enable plugins.
Default value: `false`
-##### `plugins`
+##### `plugins`
Data type: `Array`
Additional list of plugins to start, or to add to /etc/rabbitmq/enabled_plugins, if use_config_file_for_plugins is enabled.
-Default value: []
+Default value: `[]`
-##### `auth_backends`
+##### `auth_backends`
Data type: `Optional[Array]`
@@ -238,39 +346,39 @@ rabbit_auth_backend_ldap].
Default value: `undef`
-##### `cluster`
+##### `cluster`
Data type: `Hash`
Join cluster and change name of cluster.
-Default value: $rabbitmq::cluster
+Default value: `$rabbitmq::cluster`
-##### `cluster_node_type`
+##### `cluster_node_type`
Data type: `Enum['ram', 'disc']`
Choose between disc and ram nodes.
-Default value: 'disc'
+Default value: `'disc'`
-##### `cluster_nodes`
+##### `cluster_nodes`
Data type: `Array`
An array of nodes for clustering.
-Default value: []
+Default value: `[]`
-##### `cluster_partition_handling`
+##### `cluster_partition_handling`
Data type: `String`
Value to set for `cluster_partition_handling` RabbitMQ configuration variable.
-Default value: 'ignore'
+Default value: `'ignore'`
-##### `collect_statistics_interval`
+##### `collect_statistics_interval`
Data type: `Optional[Integer]`
@@ -278,23 +386,23 @@ Set the collect_statistics_interval in rabbitmq.config
Default value: `undef`
-##### `config`
+##### `config`
Data type: `String`
The file to use as the rabbitmq.config template.
-Default value: 'rabbitmq/rabbitmq.config.erb'
+Default value: `'rabbitmq/rabbitmq.config.erb'`
-##### `config_additional_variables`
+##### `config_additional_variables`
Data type: `Hash`
Additional config variables in rabbitmq.config
-Default value: {}
+Default value: `{}`
-##### `config_cluster`
+##### `config_cluster`
Data type: `Boolean`
@@ -302,23 +410,23 @@ Enable or disable clustering support.
Default value: `false`
-##### `config_kernel_variables`
+##### `config_kernel_variables`
Data type: `Hash`
Hash of Erlang kernel configuration variables to set (see [Variables Configurable in rabbitmq.config](#variables-configurable-in-rabbitmq.config)).
-Default value: {}
+Default value: `{}`
-##### `config_path`
+##### `config_path`
Data type: `Stdlib::Absolutepath`
The path to write the RabbitMQ configuration file to.
-Default value: '/etc/rabbitmq/rabbitmq.config'
+Default value: `'/etc/rabbitmq/rabbitmq.config'`
-##### `config_ranch`
+##### `config_ranch`
Data type: `Boolean`
@@ -326,15 +434,15 @@ When true, suppress config directives needed for older (<3.6) RabbitMQ versions.
Default value: `true`
-##### `config_management_variables`
+##### `config_management_variables`
Data type: `Hash`
Hash of configuration variables for the [Management Plugin](https://www.rabbitmq.com/management.html).
-Default value: {}
+Default value: `{}`
-##### `config_stomp`
+##### `config_stomp`
Data type: `Boolean`
@@ -342,7 +450,7 @@ Enable or disable stomp.
Default value: `false`
-##### `config_shovel`
+##### `config_shovel`
Data type: `Boolean`
@@ -350,39 +458,39 @@ Enable or disable shovel.
Default value: `false`
-##### `config_shovel_statics`
+##### `config_shovel_statics`
Data type: `Hash`
Hash of static shovel configurations
-Default value: {}
+Default value: `{}`
-##### `config_variables`
+##### `config_variables`
Data type: `Hash`
To set config variables in rabbitmq.config
-Default value: {}
+Default value: `{}`
-##### `default_user`
+##### `default_user`
Data type: `String`
Username to set for the `default_user` in rabbitmq.config.
-Default value: 'guest'
+Default value: `'guest'`
-##### `default_pass`
+##### `default_pass`
Data type: `String`
Password to set for the `default_user` in rabbitmq.config.
-Default value: 'guest'
+Default value: `'guest'`
-##### `delete_guest_user`
+##### `delete_guest_user`
Data type: `Boolean`
@@ -390,31 +498,31 @@ Controls whether default guest user is deleted.
Default value: `false`
-##### `env_config`
+##### `env_config`
Data type: `String`
The template file to use for rabbitmq_env.config.
-Default value: 'rabbitmq/rabbitmq-env.conf.erb'
+Default value: `'rabbitmq/rabbitmq-env.conf.erb'`
-##### `env_config_path`
+##### `env_config_path`
Data type: `Stdlib::Absolutepath`
The path to write the rabbitmq_env.config file to.
-Default value: '/etc/rabbitmq/rabbitmq-env.conf'
+Default value: `'/etc/rabbitmq/rabbitmq-env.conf'`
-##### `environment_variables`
+##### `environment_variables`
Data type: `Hash`
RabbitMQ Environment Variables in rabbitmq_env.config
-Default value: { 'LC_ALL' => 'en_US.UTF-8' }
+Default value: `{ 'LC_ALL' => 'en_US.UTF-8' }`
-##### `erlang_cookie`
+##### `erlang_cookie`
Data type: `Optional[String]`
@@ -424,23 +532,23 @@ to 'False' and set 'erlang_cookie'.
Default value: `undef`
-##### `file_limit`
+##### `file_limit`
Data type: `Variant[Integer[-1],Enum['unlimited'],Pattern[/^(infinity|\d+(:(infinity|\d+))?)$/]]`
Set rabbitmq file ulimit. Defaults to 16384. Only available on systems with `$::osfamily == 'Debian'` or `$::osfamily == 'RedHat'`.
-Default value: 16384
+Default value: `16384`
-##### `oom_score_adj`
+##### `oom_score_adj`
Data type: `Integer[-1000, 1000]`
Set rabbitmq-server process OOM score. Defaults to 0.
-Default value: 0
+Default value: `0`
-##### `heartbeat`
+##### `heartbeat`
Data type: `Optional[Integer]`
@@ -448,23 +556,23 @@ Set the heartbeat timeout interval, default is unset which uses the builtin serv
Default value: `undef`
-##### `inetrc_config`
+##### `inetrc_config`
Data type: `String`
Template to use for the inetrc config
-Default value: 'rabbitmq/inetrc.erb'
+Default value: `'rabbitmq/inetrc.erb'`
-##### `inetrc_config_path`
+##### `inetrc_config_path`
Data type: `Stdlib::Absolutepath`
Path of the file to push the inetrc config to.
-Default value: '/etc/rabbitmq/inetrc'
+Default value: `'/etc/rabbitmq/inetrc'`
-##### `ipv6`
+##### `ipv6`
Data type: `Boolean`
@@ -472,7 +580,7 @@ Whether to listen on ipv6
Default value: `false`
-##### `interface`
+##### `interface`
Data type: `Optional[String]`
@@ -481,7 +589,7 @@ to `0` will disable heartbeats.
Default value: `undef`
-##### `key_content`
+##### `key_content`
Data type: `Optional[String]`
@@ -490,7 +598,7 @@ behavior, if enabled. Undefined by default.
Default value: `undef`
-##### `ldap_auth`
+##### `ldap_auth`
Data type: `Boolean`
@@ -498,15 +606,15 @@ Set to true to enable LDAP auth.
Default value: `false`
-##### `ldap_server`
+##### `ldap_server`
Data type: `Variant[String[1],Array[String[1]]]`
LDAP server or servers to use for auth.
-Default value: 'ldap'
+Default value: `'ldap'`
-##### `ldap_user_dn_pattern`
+##### `ldap_user_dn_pattern`
Data type: `Optional[String]`
@@ -514,23 +622,23 @@ User DN pattern for LDAP auth.
Default value: `undef`
-##### `ldap_other_bind`
+##### `ldap_other_bind`
Data type: `String`
How to bind to the LDAP server. Defaults to 'anon'.
-Default value: 'anon'
+Default value: `'anon'`
-##### `ldap_config_variables`
+##### `ldap_config_variables`
Data type: `Hash`
Hash of other LDAP config variables.
-Default value: {}
+Default value: `{}`
-##### `ldap_use_ssl`
+##### `ldap_use_ssl`
Data type: `Boolean`
@@ -538,15 +646,15 @@ Set to true to use SSL for the LDAP server.
Default value: `false`
-##### `ldap_port`
+##### `ldap_port`
Data type: `Integer[1, 65535]`
Numeric port for LDAP server.
-Default value: 389
+Default value: `389`
-##### `ldap_log`
+##### `ldap_log`
Data type: `Boolean`
@@ -554,7 +662,7 @@ Set to true to log LDAP auth.
Default value: `false`
-##### `manage_python`
+##### `manage_python`
Data type: `Boolean`
@@ -563,7 +671,7 @@ installed (for rabbitmqadmin). This will only apply if `admin_enable` and `servi
Default value: `true`
-##### `management_hostname`
+##### `management_hostname`
Data type: `Optional[String]`
@@ -571,15 +679,15 @@ The hostname for the RabbitMQ management interface.
Default value: `undef`
-##### `management_port`
+##### `management_port`
Data type: `Integer[1, 65535]`
The port for the RabbitMQ management interface.
-Default value: 15672
+Default value: `15672`
-##### `management_ip_address`
+##### `management_ip_address`
Data type: `Optional[String]`
@@ -588,7 +696,7 @@ localhost only, or 0.0.0.0 to bind to all interfaces.
Default value: `undef`
-##### `management_ssl`
+##### `management_ssl`
Data type: `Boolean`
@@ -596,7 +704,7 @@ Enable/Disable SSL for the management port. Has an effect only if ssl => true.
Default value: `true`
-##### `node_ip_address`
+##### `node_ip_address`
Data type: `Optional[String]`
@@ -605,7 +713,7 @@ to bind to all interfaces.
Default value: `undef`
-##### `package_apt_pin`
+##### `package_apt_pin`
Data type: `Optional[Variant[Numeric, String]]`
@@ -613,15 +721,15 @@ Whether to pin the package to a particular source
Default value: `undef`
-##### `package_ensure`
+##### `package_ensure`
Data type: `String`
Determines the ensure state of the package. Set to installed by default, but could be changed to latest.
-Default value: 'installed'
+Default value: `'installed'`
-##### `package_gpg_key`
+##### `package_gpg_key`
Data type: `Optional[String]`
@@ -631,7 +739,7 @@ for Debian/RedHat OS Family by default.
Default value: `undef`
-##### `repo_gpg_key`
+##### `repo_gpg_key`
Data type: `Optional[String]`
@@ -641,31 +749,31 @@ default. Note, that `key_content`, if specified, would override this parameter f
Default value: `undef`
-##### `package_name`
+##### `package_name`
Data type: `Variant[String, Array]`
Name(s) of the package(s) to install
-Default value: 'rabbitmq'
+Default value: `'rabbitmq'`
-##### `port`
+##### `port`
Data type: `Integer`
The RabbitMQ port.
-Default value: 5672
+Default value: `5672`
-##### `python_package`
+##### `python_package`
Data type: `String`
Name of the package required by rabbitmqadmin.
-Default value: 'python'
+Default value: `'python'`
-##### `repos_ensure`
+##### `repos_ensure`
Data type: `Boolean`
@@ -676,15 +784,15 @@ different ways of handling the erlang deps. See also https://github.com/voxpupu
Default value: `false`
-##### `service_ensure`
+##### `service_ensure`
Data type: `Enum['running', 'stopped']`
The state of the service.
-Default value: 'running'
+Default value: `'running'`
-##### `service_manage`
+##### `service_manage`
Data type: `Boolean`
@@ -692,15 +800,15 @@ Determines if the service is managed.
Default value: `true`
-##### `service_name`
+##### `service_name`
Data type: `String`
The name of the service to manage.
-Default value: 'rabbitmq'
+Default value: `'rabbitmq'`
-##### `service_restart`
+##### `service_restart`
Data type: `Boolean`
@@ -708,7 +816,7 @@ Default defined in param.pp. Whether to restart the service on config change.
Default value: `true`
-##### `ssl`
+##### `ssl`
Data type: `Boolean`
@@ -716,7 +824,7 @@ Configures the service for using SSL.
Default value: `false`
-##### `ssl_cacert`
+##### `ssl_cacert`
Data type: `Optional[Stdlib::Absolutepath]`
@@ -724,7 +832,7 @@ CA cert path to use for SSL.
Default value: `undef`
-##### `ssl_cert`
+##### `ssl_cert`
Data type: `Optional[Stdlib::Absolutepath]`
@@ -732,7 +840,7 @@ Cert to use for SSL.
Default value: `undef`
-##### `ssl_cert_password`
+##### `ssl_cert_password`
Data type: `Optional[String]`
@@ -740,7 +848,7 @@ Password used when generating CSR.
Default value: `undef`
-##### `ssl_depth`
+##### `ssl_depth`
Data type: `Optional[Integer]`
@@ -748,7 +856,7 @@ SSL verification depth.
Default value: `undef`
-##### `ssl_dhfile`
+##### `ssl_dhfile`
Data type: `Optional[Stdlib::Absolutepath]`
@@ -756,7 +864,7 @@ Use this dhparam file [example: generate with `openssl dhparam -out /etc/rabbitm
Default value: `undef`
-##### `ssl_erl_dist`
+##### `ssl_erl_dist`
Data type: `Boolean`
@@ -764,7 +872,7 @@ Whether to use the erlang package's SSL (relies on the ssl_erl_path fact)
Default value: `false`
-##### `ssl_honor_cipher_order`
+##### `ssl_honor_cipher_order`
Data type: `Boolean`
@@ -772,7 +880,7 @@ Force use of server cipher order
Default value: `true`
-##### `ssl_interface`
+##### `ssl_interface`
Data type: `Optional[String]`
@@ -780,7 +888,7 @@ Interface for SSL listener to bind to
Default value: `undef`
-##### `ssl_key`
+##### `ssl_key`
Data type: `Optional[Stdlib::Absolutepath]`
@@ -788,7 +896,7 @@ Key to use for SSL.
Default value: `undef`
-##### `ssl_only`
+##### `ssl_only`
Data type: `Boolean`
@@ -797,47 +905,47 @@ port => undef
Default value: `false`
-##### `ssl_management_port`
+##### `ssl_management_port`
Data type: `Integer[1, 65535]`
SSL management port.
-Default value: 15671
+Default value: `15671`
-##### `ssl_management_cacert`
+##### `ssl_management_cacert`
Data type: `Optional[Stdlib::Absolutepath]`
SSL management cacert. If unset set to ssl_cacert for backwards compatibility.
-Default value: $ssl_cacert
+Default value: `$ssl_cacert`
-##### `ssl_management_cert`
+##### `ssl_management_cert`
Data type: `Optional[Stdlib::Absolutepath]`
SSL management cert. If unset set to ssl_cert for backwards compatibility.
-Default value: $ssl_cert
+Default value: `$ssl_cert`
-##### `ssl_management_key`
+##### `ssl_management_key`
Data type: `Optional[Stdlib::Absolutepath]`
SSL management key. If unset set to ssl_key for backwards compatibility.
-Default value: $ssl_key
+Default value: `$ssl_key`
-##### `ssl_port`
+##### `ssl_port`
Data type: `Integer[1, 65535]`
SSL port for RabbitMQ
-Default value: 5671
+Default value: `5671`
-##### `ssl_reuse_sessions`
+##### `ssl_reuse_sessions`
Data type: `Boolean`
@@ -845,7 +953,7 @@ Reuse ssl sessions
Default value: `true`
-##### `ssl_secure_renegotiate`
+##### `ssl_secure_renegotiate`
Data type: `Boolean`
@@ -853,23 +961,23 @@ Use ssl secure renegotiate
Default value: `true`
-##### `ssl_stomp_port`
+##### `ssl_stomp_port`
Data type: `Integer[1, 65535]`
SSL stomp port.
-Default value: 6164
+Default value: `6164`
-##### `ssl_verify`
+##### `ssl_verify`
Data type: `Enum['verify_none','verify_peer']`
rabbitmq.config SSL verify setting.
-Default value: 'verify_none'
+Default value: `'verify_none'`
-##### `ssl_fail_if_no_peer_cert`
+##### `ssl_fail_if_no_peer_cert`
Data type: `Boolean`
@@ -877,15 +985,15 @@ rabbitmq.config `fail_if_no_peer_cert` setting.
Default value: `false`
-##### `ssl_management_verify`
+##### `ssl_management_verify`
Data type: `Enum['verify_none','verify_peer']`
rabbitmq.config SSL verify setting for rabbitmq_management.
-Default value: 'verify_none'
+Default value: `'verify_none'`
-##### `ssl_versions`
+##### `ssl_versions`
Data type: `Optional[Array]`
@@ -896,7 +1004,7 @@ POODLE and BEAST attacks. Please see the
Default value: `undef`
-##### `ssl_ciphers`
+##### `ssl_ciphers`
Data type: `Array`
@@ -906,18 +1014,18 @@ Functionality can be tested with cipherscan or similar tool: https://github.com/
* Erlang style: `['ecdhe_rsa,aes_256_cbc,sha', 'dhe_rsa,aes_256_cbc,sha']`
* OpenSSL style: `['ECDHE-RSA-AES256-SHA', 'DHE-RSA-AES256-SHA']`
-Default value: []
+Default value: `[]`
-##### `ssl_crl_check`
+##### `ssl_crl_check`
Data type: `Enum['true','false','peer','best_effort']`
Perform CRL (Certificate Revocation List) verification
Please see the [Erlang SSL](https://erlang.org/doc/man/ssl.html#type-crl_check) module documentation for more information.
-Default value: 'false'
+Default value: `'false'`
-##### `ssl_crl_cache_hash_dir`
+##### `ssl_crl_cache_hash_dir`
Data type: `Optional[Stdlib::Absolutepath]`
@@ -926,7 +1034,7 @@ Please see the [Erlang SSL](https://erlang.org/doc/man/ssl.html#type-crl_cache_o
Default value: `undef`
-##### `ssl_crl_cache_http_timeout`
+##### `ssl_crl_cache_http_timeout`
Data type: `Optional[Integer]`
@@ -935,15 +1043,15 @@ Please see the [Erlang SSL](https://erlang.org/doc/man/ssl.html#type-crl_cache_o
Default value: `undef`
-##### `stomp_port`
+##### `stomp_port`
Data type: `Integer[1, 65535]`
The port to use for Stomp.
-Default value: 6163
+Default value: `6163`
-##### `stomp_ssl_only`
+##### `stomp_ssl_only`
Data type: `Boolean`
@@ -951,7 +1059,7 @@ Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be creat
Default value: `false`
-##### `stomp_ensure`
+##### `stomp_ensure`
Data type: `Boolean`
@@ -959,15 +1067,15 @@ Enable to install the stomp plugin.
Default value: `false`
-##### `tcp_backlog`
+##### `tcp_backlog`
Data type: `Integer`
The size of the backlog on TCP connections.
-Default value: 128
+Default value: `128`
-##### `tcp_keepalive`
+##### `tcp_keepalive`
Data type: `Boolean`
@@ -975,7 +1083,7 @@ Enable TCP connection keepalive for RabbitMQ service.
Default value: `false`
-##### `tcp_recbuf`
+##### `tcp_recbuf`
Data type: `Optional[Integer]`
@@ -983,7 +1091,7 @@ Corresponds to recbuf in RabbitMQ `tcp_listen_options`
Default value: `undef`
-##### `tcp_sndbuf`
+##### `tcp_sndbuf`
Data type: `Optional[Integer]`
@@ -991,7 +1099,7 @@ Integer, corresponds to sndbuf in RabbitMQ `tcp_listen_options`
Default value: `undef`
-##### `wipe_db_on_cookie_change`
+##### `wipe_db_on_cookie_change`
Data type: `Boolean`
@@ -999,31 +1107,31 @@ Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database.
Default value: `false`
-##### `rabbitmq_user`
+##### `rabbitmq_user`
Data type: `String`
OS dependent The system user the rabbitmq daemon runs as.
-Default value: 'rabbitmq'
+Default value: `'rabbitmq'`
-##### `rabbitmq_group`
+##### `rabbitmq_group`
Data type: `String`
OS dependent The system group the rabbitmq daemon runs as.
-Default value: 'rabbitmq'
+Default value: `'rabbitmq'`
-##### `rabbitmq_home`
+##### `rabbitmq_home`
Data type: `Stdlib::Absolutepath`
OS dependent The home directory of the rabbitmq deamon.
-Default value: '/var/lib/rabbitmq'
+Default value: `'/var/lib/rabbitmq'`
-##### `rabbitmqadmin_package`
+##### `rabbitmqadmin_package`
Data type: `Optional[String]`
@@ -1031,23 +1139,23 @@ OS dependent If undef: install rabbitmqadmin via archive, otherwise via package
Default value: `undef`
-##### `archive_options`
+##### `archive_options`
Data type: `Array`
Extra options to Archive resource to download rabbitmqadmin file
-Default value: []
+Default value: `[]`
-##### `loopback_users`
+##### `loopback_users`
Data type: `Array`
This option configures a list of users to allow access via the loopback interfaces
-Default value: ['guest']
+Default value: `['guest']`
-##### `package_source`
+##### `package_source`
Data type: `Optional[String]`
@@ -1055,7 +1163,7 @@ Data type: `Optional[String]`
Default value: `undef`
-##### `package_provider`
+##### `package_provider`
Data type: `Optional[String]`
@@ -1063,7 +1171,7 @@ Data type: `Optional[String]`
Default value: `undef`
-##### `ssl_management_fail_if_no_peer_cert`
+##### `ssl_management_fail_if_no_peer_cert`
Data type: `Boolean`
@@ -1073,7 +1181,7 @@ Default value: `false`
## Resource types
-### rabbitmq_binding
+### `rabbitmq_binding`
Native type for managing rabbitmq bindings
@@ -1126,89 +1234,99 @@ rabbitmq_binding { 'myexchange@myqueue@myvhost':
The following properties are available in the `rabbitmq_binding` type.
-##### `ensure`
-
-Valid values: present, absent
+##### `arguments`
-The basic property that the resource should be in.
+binding arguments
-Default value: present
+Default value: `{}`
-##### `source`
+##### `destination`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
namevar
-source of binding
-
-##### `destination`
+destination of binding
-Valid values: %r{^\S+$}
+##### `destination_type`
-namevar
+Valid values: `%r{queue|exchange}`
-destination of binding
+binding destination_type
-##### `vhost`
+Default value: `queue`
-Valid values: %r{^\S+$}
+##### `ensure`
-namevar
+Valid values: `present`, `absent`
-vhost
+The basic property that the resource should be in.
-Default value: /
+Default value: `present`
##### `routing_key`
-Valid values: %r{^\S*$}
+Valid values: `%r{^\S*$}`
namevar
binding routing_key
-##### `destination_type`
+##### `source`
-Valid values: %r{queue|exchange}
+Valid values: `%r{^\S+$}`
-binding destination_type
+namevar
-Default value: queue
+source of binding
-##### `arguments`
+##### `vhost`
-binding arguments
+Valid values: `%r{^\S+$}`
+
+namevar
+
+vhost
-Default value: {}
+Default value: `/`
#### Parameters
The following parameters are available in the `rabbitmq_binding` type.
-##### `name`
+* [`name`](#-rabbitmq_binding--name)
+* [`password`](#-rabbitmq_binding--password)
+* [`provider`](#-rabbitmq_binding--provider)
+* [`user`](#-rabbitmq_binding--user)
+
+##### `name`
namevar
resource name, either source@destination@vhost or arbitrary name with params
-##### `user`
+##### `password`
-Valid values: %r{^\S+$}
+Valid values: `%r{\S+}`
-The user to use to connect to rabbitmq
+The password to use to connect to rabbitmq
-Default value: guest
+Default value: `guest`
-##### `password`
+##### `provider`
-Valid values: %r{\S+}
+The specific backend to use for this `rabbitmq_binding` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
-The password to use to connect to rabbitmq
+##### `user`
-Default value: guest
+Valid values: `%r{^\S+$}`
-### rabbitmq_cluster
+The user to use to connect to rabbitmq
+
+Default value: `guest`
+
+### `rabbitmq_cluster`
Native type for managing rabbitmq cluster
@@ -1238,35 +1356,52 @@ The following properties are available in the `rabbitmq_cluster` type.
##### `ensure`
-Valid values: present, absent
+Valid values: `present`, `absent`
The basic property that the resource should be in.
-Default value: present
+Default value: `present`
#### Parameters
The following parameters are available in the `rabbitmq_cluster` type.
-##### `name`
+* [`init_node`](#-rabbitmq_cluster--init_node)
+* [`local_node`](#-rabbitmq_cluster--local_node)
+* [`name`](#-rabbitmq_cluster--name)
+* [`node_disc_type`](#-rabbitmq_cluster--node_disc_type)
+* [`provider`](#-rabbitmq_cluster--provider)
+
+##### `init_node`
+
+Name of which cluster node to join.
+
+##### `local_node`
+
+Name of the local node
+
+Default value: `undef`
+
+##### `name`
namevar
The cluster name
-##### `init_node`
+##### `node_disc_type`
-Name of which cluster node to join.
+Valid values: `%r{disc|ram}`
-##### `node_disc_type`
+Storage type of node, default disc.
-Valid values: %r{disc|ram}
+Default value: `disc`
-Storage type of node, default disc.
+##### `provider`
-Default value: disc
+The specific backend to use for this `rabbitmq_cluster` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
-### rabbitmq_erlang_cookie
+### `rabbitmq_erlang_cookie`
Type to manage the rabbitmq erlang cookie securely
@@ -1284,7 +1419,7 @@ The following properties are available in the `rabbitmq_erlang_cookie` type.
##### `content`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
Content of cookie
@@ -1292,43 +1427,50 @@ Content of cookie
The following parameters are available in the `rabbitmq_erlang_cookie` type.
-##### `path`
-
+* [`force`](#-rabbitmq_erlang_cookie--force)
+* [`path`](#-rabbitmq_erlang_cookie--path)
+* [`provider`](#-rabbitmq_erlang_cookie--provider)
+* [`rabbitmq_group`](#-rabbitmq_erlang_cookie--rabbitmq_group)
+* [`rabbitmq_home`](#-rabbitmq_erlang_cookie--rabbitmq_home)
+* [`rabbitmq_user`](#-rabbitmq_erlang_cookie--rabbitmq_user)
+* [`service_name`](#-rabbitmq_erlang_cookie--service_name)
-
-##### `force`
+##### `force`
Valid values: `true`, `false`
-
Default value: `false`
-##### `rabbitmq_user`
+##### `path`
+##### `provider`
-Default value: rabbitmq
+The specific backend to use for this `rabbitmq_erlang_cookie` resource. You will seldom need to specify this --- Puppet
+will usually discover the appropriate provider for your platform.
-##### `rabbitmq_group`
+##### `rabbitmq_group`
+Default value: `rabbitmq`
-Default value: rabbitmq
+##### `rabbitmq_home`
-##### `rabbitmq_home`
+Default value: `/var/lib/rabbitmq`
+##### `rabbitmq_user`
-Default value: /var/lib/rabbitmq
-##### `service_name`
+Default value: `rabbitmq`
-Valid values: %r{^\S+$}
+##### `service_name`
+Valid values: `%r{^\S+$}`
-### rabbitmq_exchange
+### `rabbitmq_exchange`
Native type for managing rabbitmq exchanges
@@ -1357,77 +1499,92 @@ The following properties are available in the `rabbitmq_exchange` type.
##### `ensure`
-Valid values: present, absent
+Valid values: `present`, `absent`
The basic property that the resource should be in.
-Default value: present
+Default value: `present`
#### Parameters
The following parameters are available in the `rabbitmq_exchange` type.
-##### `name`
+* [`arguments`](#-rabbitmq_exchange--arguments)
+* [`auto_delete`](#-rabbitmq_exchange--auto_delete)
+* [`durable`](#-rabbitmq_exchange--durable)
+* [`internal`](#-rabbitmq_exchange--internal)
+* [`name`](#-rabbitmq_exchange--name)
+* [`password`](#-rabbitmq_exchange--password)
+* [`provider`](#-rabbitmq_exchange--provider)
+* [`type`](#-rabbitmq_exchange--type)
+* [`user`](#-rabbitmq_exchange--user)
-Valid values: %r{^\S*@\S+$}
+##### `arguments`
-namevar
+Exchange arguments example: {"hash-header": "message-distribution-hash"}
-Name of exchange
+Default value: `{}`
-##### `type`
+##### `auto_delete`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
-Exchange type to be set *on creation*
+Exchange auto delete option to be set *on creation*
+
+Default value: `false`
-##### `durable`
+##### `durable`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
Exchange durability to be set *on creation*
Default value: `false`
-##### `auto_delete`
+##### `internal`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
-Exchange auto delete option to be set *on creation*
+Exchange internal option to be set *on creation*
Default value: `false`
-##### `internal`
+##### `name`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S*@\S+$}`
-Exchange internal option to be set *on creation*
+namevar
-Default value: `false`
+Name of exchange
-##### `arguments`
+##### `password`
-Exchange arguments example: {"hash-header": "message-distribution-hash"}
+Valid values: `%r{\S+}`
-Default value: {}
+The password to use to connect to rabbitmq
-##### `user`
+Default value: `guest`
-Valid values: %r{^\S+$}
+##### `provider`
-The user to use to connect to rabbitmq
+The specific backend to use for this `rabbitmq_exchange` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
-Default value: guest
+##### `type`
-##### `password`
+Valid values: `%r{^\S+$}`
-Valid values: %r{\S+}
+Exchange type to be set *on creation*
-The password to use to connect to rabbitmq
+##### `user`
+
+Valid values: `%r{^\S+$}`
+
+The user to use to connect to rabbitmq
-Default value: guest
+Default value: `guest`
-### rabbitmq_parameter
+### `rabbitmq_parameter`
Type for managing rabbitmq parameters
@@ -1470,17 +1627,17 @@ rabbitmq_parameter { 'documentumShovelNoMunging@/':
The following properties are available in the `rabbitmq_parameter` type.
-##### `ensure`
+##### `component_name`
-Valid values: present, absent
+The component_name to use when setting parameter, eg: shovel or federation
-The basic property that the resource should be in.
+##### `ensure`
-Default value: present
+Valid values: `present`, `absent`
-##### `component_name`
+The basic property that the resource should be in.
-The component_name to use when setting parameter, eg: shovel or federation
+Default value: `present`
##### `value`
@@ -1490,15 +1647,11 @@ A hash of values to use with the component name you are setting
The following parameters are available in the `rabbitmq_parameter` type.
-##### `name`
+* [`autoconvert`](#-rabbitmq_parameter--autoconvert)
+* [`name`](#-rabbitmq_parameter--name)
+* [`provider`](#-rabbitmq_parameter--provider)
-Valid values: %r{^\S+@\S+$}
-
-namevar
-
-combination of name@vhost to set parameter for
-
-##### `autoconvert`
+##### `autoconvert`
Valid values: `true`, `false`
@@ -1506,7 +1659,20 @@ whether numeric strings from `value` should be converted to int automatically
Default value: `true`
-### rabbitmq_plugin
+##### `name`
+
+Valid values: `%r{^\S+@\S+$}`
+
+namevar
+
+combination of name@vhost to set parameter for
+
+##### `provider`
+
+The specific backend to use for this `rabbitmq_parameter` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
+
+### `rabbitmq_plugin`
manages rabbitmq plugins
@@ -1541,39 +1707,49 @@ The following properties are available in the `rabbitmq_plugin` type.
##### `ensure`
-Valid values: present, absent
+Valid values: `present`, `absent`
The basic property that the resource should be in.
-Default value: present
+Default value: `present`
#### Parameters
The following parameters are available in the `rabbitmq_plugin` type.
-##### `name`
+* [`mode`](#-rabbitmq_plugin--mode)
+* [`name`](#-rabbitmq_plugin--name)
+* [`provider`](#-rabbitmq_plugin--provider)
+* [`umask`](#-rabbitmq_plugin--umask)
-Valid values: %r{^\S+$}
+##### `mode`
-namevar
+Valid values: `online`, `offline`, `best`
-The name of the plugin to enable
+Define how the plugin should be enabled regarding node status.
-##### `mode`
+Default value: `best`
-Valid values: online, offline, best
+##### `name`
-Define how the plugin should be enabled regarding node status.
+Valid values: `%r{^\S+$}`
+
+namevar
+
+The name of the plugin to enable
-Default value: best
+##### `provider`
-##### `umask`
+The specific backend to use for this `rabbitmq_plugin` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
+
+##### `umask`
Sets the octal umask to be used while creating this resource
-Default value: 0022
+Default value: `0022`
-### rabbitmq_policy
+### `rabbitmq_policy`
Type for managing rabbitmq policies
@@ -1597,51 +1773,59 @@ rabbitmq_policy { 'ha-all@myvhost':
The following properties are available in the `rabbitmq_policy` type.
-##### `ensure`
+##### `applyto`
-Valid values: present, absent
+Valid values: `all`, `exchanges`, `queues`
-The basic property that the resource should be in.
+policy apply to
-Default value: present
+Default value: `all`
-##### `pattern`
+##### `definition`
-policy pattern
+policy definition
-##### `applyto`
+##### `ensure`
-Valid values: all, exchanges, queues
+Valid values: `present`, `absent`
-policy apply to
+The basic property that the resource should be in.
-Default value: all
+Default value: `present`
-##### `definition`
+##### `pattern`
-policy definition
+policy pattern
##### `priority`
-Valid values: %r{^\d+$}
+Valid values: `%r{^\d+$}`
policy priority
-Default value: 0
+Default value: `0`
#### Parameters
The following parameters are available in the `rabbitmq_policy` type.
-##### `name`
+* [`name`](#-rabbitmq_policy--name)
+* [`provider`](#-rabbitmq_policy--provider)
+
+##### `name`
-Valid values: %r{^\S+@\S+$}
+Valid values: `%r{^\S+@\S+$}`
namevar
combination of policy@vhost to create policy for
-### rabbitmq_queue
+##### `provider`
+
+The specific backend to use for this `rabbitmq_policy` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
+
+### `rabbitmq_queue`
Native type for managing rabbitmq queue
@@ -1669,63 +1853,76 @@ The following properties are available in the `rabbitmq_queue` type.
##### `ensure`
-Valid values: present, absent
+Valid values: `present`, `absent`
The basic property that the resource should be in.
-Default value: present
+Default value: `present`
#### Parameters
The following parameters are available in the `rabbitmq_queue` type.
-##### `name`
+* [`arguments`](#-rabbitmq_queue--arguments)
+* [`auto_delete`](#-rabbitmq_queue--auto_delete)
+* [`durable`](#-rabbitmq_queue--durable)
+* [`name`](#-rabbitmq_queue--name)
+* [`password`](#-rabbitmq_queue--password)
+* [`provider`](#-rabbitmq_queue--provider)
+* [`user`](#-rabbitmq_queue--user)
-Valid values: %r{^\S*@\S+$}
+##### `arguments`
-namevar
+Queue arguments example: {x-message-ttl => 60, x-expires => 10}
-Name of queue
+Default value: `{}`
+
+##### `auto_delete`
-##### `durable`
+Valid values: `%r{true|false}`
-Valid values: %r{true|false}
+Queue will be auto deleted
+
+Default value: `false`
+
+##### `durable`
+
+Valid values: `%r{true|false}`
Queue is durable
Default value: `true`
-##### `auto_delete`
-
-Valid values: %r{true|false}
+##### `name`
-Queue will be auto deleted
+Valid values: `%r{^\S*@\S+$}`
-Default value: `false`
+namevar
-##### `arguments`
+Name of queue
-Queue arguments example: {x-message-ttl => 60, x-expires => 10}
+##### `password`
-Default value: {}
+Valid values: `%r{\S+}`
-##### `user`
+The password to use to connect to rabbitmq
-Valid values: %r{^\S+$}
+Default value: `guest`
-The user to use to connect to rabbitmq
+##### `provider`
-Default value: guest
+The specific backend to use for this `rabbitmq_queue` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
-##### `password`
+##### `user`
-Valid values: %r{\S+}
+Valid values: `%r{^\S+$}`
-The password to use to connect to rabbitmq
+The user to use to connect to rabbitmq
-Default value: guest
+Default value: `guest`
-### rabbitmq_user
+### `rabbitmq_user`
Native type for managing rabbitmq users
@@ -1761,45 +1958,53 @@ rabbitmq_user { 'dan':
The following properties are available in the `rabbitmq_user` type.
-##### `ensure`
+##### `admin`
-Valid values: present, absent
+Valid values: `%r{true|false}`
-The basic property that the resource should be in.
+whether or not user should be an admin
-Default value: present
+Default value: `false`
-##### `password`
+##### `ensure`
-User password to be set *on creation* and validated each run
+Valid values: `present`, `absent`
-##### `admin`
+The basic property that the resource should be in.
-Valid values: %r{true|false}
+Default value: `present`
-whether or not user should be an admin
+##### `password`
-Default value: false
+User password to be set *on creation* and validated each run
##### `tags`
additional tags for the user
-Default value: []
+Default value: `[]`
#### Parameters
The following parameters are available in the `rabbitmq_user` type.
-##### `name`
+* [`name`](#-rabbitmq_user--name)
+* [`provider`](#-rabbitmq_user--provider)
+
+##### `name`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
namevar
Name of user
-### rabbitmq_user_permissions
+##### `provider`
+
+The specific backend to use for this `rabbitmq_user` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
+
+### `rabbitmq_user_permissions`
Type for managing rabbitmq user permissions
@@ -1819,17 +2024,17 @@ rabbitmq_user_permissions { 'dan@myvhost':
The following properties are available in the `rabbitmq_user_permissions` type.
-##### `ensure`
+##### `configure_permission`
-Valid values: present, absent
+regexp representing configuration permissions
-The basic property that the resource should be in.
+##### `ensure`
-Default value: present
+Valid values: `present`, `absent`
-##### `configure_permission`
+The basic property that the resource should be in.
-regexp representing configuration permissions
+Default value: `present`
##### `read_permission`
@@ -1843,15 +2048,23 @@ regexp representing write permissions
The following parameters are available in the `rabbitmq_user_permissions` type.
-##### `name`
+* [`name`](#-rabbitmq_user_permissions--name)
+* [`provider`](#-rabbitmq_user_permissions--provider)
+
+##### `name`
-Valid values: %r{^\S+@\S+$}
+Valid values: `%r{^\S+@\S+$}`
namevar
combination of user@vhost to grant privileges to
-### rabbitmq_vhost
+##### `provider`
+
+The specific backend to use for this `rabbitmq_user_permissions` resource. You will seldom need to specify this ---
+Puppet will usually discover the appropriate provider for your platform.
+
+### `rabbitmq_vhost`
Native type for managing rabbitmq vhosts
@@ -1877,21 +2090,29 @@ The following properties are available in the `rabbitmq_vhost` type.
##### `ensure`
-Valid values: present, absent
+Valid values: `present`, `absent`
The basic property that the resource should be in.
-Default value: present
+Default value: `present`
#### Parameters
The following parameters are available in the `rabbitmq_vhost` type.
-##### `name`
+* [`name`](#-rabbitmq_vhost--name)
+* [`provider`](#-rabbitmq_vhost--provider)
+
+##### `name`
-Valid values: %r{^\S+$}
+Valid values: `%r{^\S+$}`
namevar
The name of the vhost to add
+##### `provider`
+
+The specific backend to use for this `rabbitmq_vhost` resource. You will seldom need to specify this --- Puppet will
+usually discover the appropriate provider for your platform.
+
diff --git a/lib/puppet/provider/rabbitmq_cluster/rabbitmqctl.rb b/lib/puppet/provider/rabbitmq_cluster/rabbitmqctl.rb
index a64677e9e..b57acd3d6 100644
--- a/lib/puppet/provider/rabbitmq_cluster/rabbitmqctl.rb
+++ b/lib/puppet/provider/rabbitmq_cluster/rabbitmqctl.rb
@@ -15,8 +15,9 @@ def create
storage_type = @resource[:node_disc_type].to_s
init_node = @resource[:init_node].to_s.gsub(%r{^.*@}, '')
+ local_node = @resource[:local_node].to_s.gsub(%r{^.*@}, '')
- if [Facter.value(:hostname), Facter.value(:fqdn)].include? init_node
+ if local_node == init_node || [Facter.value(:hostname), Facter.value(:fqdn)].include?(init_node)
return rabbitmqctl('set_cluster_name', @resource[:name]) unless cluster_name == resource[:name].to_s
else
rabbitmqctl('stop_app')
diff --git a/lib/puppet/type/rabbitmq_cluster.rb b/lib/puppet/type/rabbitmq_cluster.rb
index b215cf023..3ba0db217 100644
--- a/lib/puppet/type/rabbitmq_cluster.rb
+++ b/lib/puppet/type/rabbitmq_cluster.rb
@@ -40,6 +40,11 @@
end
end
+ newparam(:local_node) do
+ desc 'Name of the local node'
+ defaultto(:undef)
+ end
+
newparam(:node_disc_type) do
desc 'Storage type of node, default disc.'
newvalues(%r{disc|ram})
diff --git a/manifests/init.pp b/manifests/init.pp
index 3048273e3..741acbb17 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -578,6 +578,7 @@
$cluster['name'] => {
'init_node' => $cluster['init_node'],
'node_disc_type' => $cluster_node_type,
+ 'local_node' => $cluster['local_node'],
}
})
}
diff --git a/spec/acceptance/clustering_spec.rb b/spec/acceptance/clustering_spec.rb
index bf0452c46..ca229e4dc 100644
--- a/spec/acceptance/clustering_spec.rb
+++ b/spec/acceptance/clustering_spec.rb
@@ -74,4 +74,25 @@ class { 'erlang': epel_enable => true}
end
end
end
+
+ context 'rabbitmq::cluster[:local_node] = foobar' do
+ it 'runs successfully' do
+ pp = <<-EOS
+ class { 'rabbitmq':
+ cluster => { 'name' => 'rabbit_cluster', 'init_node' => 'foobar', 'local_node' => 'foobar' },
+ config_cluster => true,
+ cluster_nodes => ['foobar', 'rabbit2'],
+ cluster_node_type => 'ram',
+ environment_variables => { 'RABBITMQ_USE_LONGNAME' => true, 'NODENAME' => 'rabbit@foobar' },
+ erlang_cookie => 'TESTCOOKIE',
+ }
+ if $facts['os']['family'] == 'RedHat' {
+ class { 'erlang': epel_enable => true}
+ Class['erlang'] -> Class['rabbitmq']
+ }
+ EOS
+
+ apply_manifest(pp, expect_failures: true)
+ end
+ end
end
diff --git a/spec/unit/puppet/type/rabbitmq_cluster_spec.rb b/spec/unit/puppet/type/rabbitmq_cluster_spec.rb
index e71b283a7..ab404e062 100644
--- a/spec/unit/puppet/type/rabbitmq_cluster_spec.rb
+++ b/spec/unit/puppet/type/rabbitmq_cluster_spec.rb
@@ -22,6 +22,16 @@
expect(rabbitmq_cluster[:init_node]).to eq('host1')
end
+ it 'check if local_node set to host1' do
+ rabbitmq_cluster[:local_node] = 'host1'
+ expect(rabbitmq_cluster[:local_node]).to eq('host1')
+ end
+
+ it 'local_node not set should default to undef' do
+ rabbitmq_cluster[:init_node] = 'host1'
+ expect(rabbitmq_cluster[:local_node]).to eq(:undef)
+ end
+
it 'try to set node_disc_type to ram' do
rabbitmq_cluster[:node_disc_type] = 'ram'
expect(rabbitmq_cluster[:node_disc_type]).to eq('ram')