Classes
Public Classes
rabbitmq
: A module to manage RabbitMQ
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 existsrabbitmq::install::rabbitmqadmin
: Install rabbitmq adminrabbitmq::management
: Manage presence / absence of user resource for guest management user.rabbitmq::repo::apt
: requires puppetlabs-apt puppetlabs-stdlibrabbitmq::repo::rhel
: Makes sure that the Packagecloud repo is installedrabbitmq::service
: This class manages the rabbitmq server service itself.
Resource types
rabbitmq_binding
: Native type for managing rabbitmq bindings rabbitmq_binding { 'binding 1': ensure => present, source => 'myexchange'rabbitmq_erlang_cookie
: Type to manage the rabbitmq erlang cookie securely This is essentially a private type used by the rabbitmq::config class to manage the erlanrabbitmq_exchange
: Native type for managing rabbitmq exchangesrabbitmq_parameter
: Type for managing rabbitmq parametersrabbitmq_plugin
: manages rabbitmq pluginsrabbitmq_policy
: Type for managing rabbitmq policiesrabbitmq_queue
: Native type for managing rabbitmq queuerabbitmq_user
: Native type for managing rabbitmq usersrabbitmq_user_permissions
: Type for managing rabbitmq user permissionsrabbitmq_vhost
: Native type for managing rabbitmq vhosts
A module to manage RabbitMQ
include rabbitmq
class { 'rabbitmq':
service_manage => false,
port => '5672',
delete_guest_user => true,
}
class { 'rabbitmq':
key_content => template('openstack/rabbit.pub.key'),
package_gpg_key => '/tmp/rabbit.pub.key',
}
class { 'rabbitmq':
package_gpg_key => 'http://www.some_site.some_domain/some_key.pub.key',
}
class { 'rabbitmq':
port => '5672',
environment_variables => {
'NODENAME' => 'node01',
'SERVICENAME' => 'RabbitMQ'
}
}
class { 'rabbitmq':
port => '5672',
config_variables => {
'hipe_compile' => true,
'frame_max' => 131072,
'log_levels' => "[{connection, info}]"
}
}
class { 'rabbitmq':
port => '5672',
config_kernel_variables => {
'inet_dist_listen_min' => 9100,
'inet_dist_listen_max' => 9105,
}
}
class { 'rabbitmq':
config_management_variables => {
'rates_mode' => 'basic',
}
}
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)
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,
}
The following parameters are available in the rabbitmq
class.
Data type: Boolean
If enabled sets up the management interface/plugin for RabbitMQ. This also install the rabbitmqadmin command line tool.
Default value: true
Data type: Boolean
If enabled sets up the management interface/plugin for RabbitMQ. NOTE: This does not install the rabbitmqadmin command line tool.
Default value: false
Data type: Boolean
If enabled the /etc/rabbitmq/enabled_plugins config file is created, replacing the use of the rabbitmqplugins provider to enable plugins.
Default value: false
Data type: Optional[Array]
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].
Default value: undef
Data type: Enum['ram', 'disk', 'disc']
Choose between disc and ram nodes.
Default value: 'disc'
Data type: Array
An array of nodes for clustering.
Default value: []
Data type: String
Value to set for cluster_partition_handling
RabbitMQ configuration variable.
Default value: 'ignore'
Data type: Optional[Integer]
Set the collect_statistics_interval in rabbitmq.config
Default value: undef
Data type: String
The file to use as the rabbitmq.config template.
Default value: 'rabbitmq/rabbitmq.config.erb'
Data type: Hash
Additional config variables in rabbitmq.config
Default value: {}
Data type: Boolean
Enable or disable clustering support.
Default value: false
Data type: Hash
Hash of Erlang kernel configuration variables to set (see Variables Configurable in rabbitmq.config).
Default value: {}
Data type: Stdlib::Absolutepath
The path to write the RabbitMQ configuration file to.
Default value: '/etc/rabbitmq/rabbitmq.config'
Data type: Boolean
When true, suppress config directives needed for older (<3.6) RabbitMQ versions.
Default value: true
Data type: Hash
Hash of configuration variables for the Management Plugin.
Default value: {}
Data type: Boolean
Enable or disable stomp.
Default value: false
Data type: Boolean
Enable or disable shovel.
Default value: false
Data type: Hash
Hash of static shovel configurations
Default value: {}
Data type: Hash
To set config variables in rabbitmq.config
Default value: {}
Data type: String
Username to set for the default_user
in rabbitmq.config.
Default value: 'guest'
Data type: String
Password to set for the default_user
in rabbitmq.config.
Default value: 'guest'
Data type: Boolean
Controls whether default guest user is deleted.
Default value: false
Data type: String
The template file to use for rabbitmq_env.config.
Default value: 'rabbitmq/rabbitmq-env.conf.erb'
Data type: Stdlib::Absolutepath
The path to write the rabbitmq_env.config file to.
Default value: '/etc/rabbitmq/rabbitmq-env.conf'
Data type: Hash
RabbitMQ Environment Variables in rabbitmq_env.config
Default value: { 'LC_ALL' => 'en_US.UTF-8' }
Data type: Optional[String]
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'.
Default value: undef
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
Data type: Optional[Integer]
Set the heartbeat timeout interval, default is unset which uses the builtin server defaults of 60 seconds. Setting this
Default value: undef
Data type: String
Template to use for the inetrc config
Default value: 'rabbitmq/inetrc.erb'
Data type: Stdlib::Absolutepath
Path of the file to push the inetrc config to.
Default value: '/etc/rabbitmq/inetrc'
Data type: Boolean
Whether to listen on ipv6
Default value: false
Data type: Optional[String]
Interface to bind to (sets tcp_listeners parameter). By default, bind to all interfaces
to 0
will disable heartbeats.
Default value: undef
Data type: Optional[String]
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.
Default value: undef
Data type: Boolean
Set to true to enable LDAP auth.
Default value: false
Data type: String
LDAP server to use for auth.
Default value: 'ldap'
Data type: Optional[String]
User DN pattern for LDAP auth.
Default value: undef
Data type: String
How to bind to the LDAP server. Defaults to 'anon'.
Default value: 'anon'
Data type: Hash
Hash of other LDAP config variables.
Default value: {}
Data type: Boolean
Set to true to use SSL for the LDAP server.
Default value: false
Data type: Integer[1, 65535]
Numeric port for LDAP server.
Default value: 389
Data type: Boolean
Set to true to log LDAP auth.
Default value: false
Data type: Boolean
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.
Default value: true
Data type: Optional[String]
The hostname for the RabbitMQ management interface.
Default value: undef
Data type: Integer[1, 65535]
The port for the RabbitMQ management interface.
Default value: 15672
Data type: Optional[String]
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.
Default value: undef
Data type: Boolean
Enable/Disable SSL for the management port. Has an effect only if ssl => true.
Default value: true
Data type: Optional[String]
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.
Default value: undef
Data type: Optional[Variant[Numeric, String]]
Whether to pin the package to a particular source
Default value: undef
Data type: String
Determines the ensure state of the package. Set to installed by default, but could be changed to latest.
Default value: 'installed'
Data type: Optional[String]
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.
Default value: undef
Data type: Variant[String, Array]
Name(s) of the package(s) to install
Default value: 'rabbitmq'
Data type: Integer
The RabbitMQ port.
Default value: 5672
Data type: String
Name of the package required by rabbitmqadmin.
Default value: 'python'
Data type: Boolean
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 voxpupuli#788
Default value: false
Data type: Enum['running', 'stopped']
The state of the service.
Default value: 'running'
Data type: Boolean
Determines if the service is managed.
Default value: true
Data type: String
The name of the service to manage.
Default value: 'rabbitmq'
Data type: Boolean
Default defined in param.pp. Whether to restart the service on config change.
Default value: true
Data type: Boolean
Configures the service for using SSL.
Default value: false
Data type: Optional[Stdlib::Absolutepath]
CA cert path to use for SSL.
Default value: undef
Data type: Optional[Stdlib::Absolutepath]
Cert to use for SSL.
Default value: undef
Data type: Optional[String]
Password used when generating CSR.
Default value: undef
Data type: Optional[Integer]
SSL verification depth.
Default value: undef
Data type: Optional[Stdlib::Absolutepath]
Use this dhparam file [example: generate with openssl dhparam -out /etc/rabbitmq/ssl/dhparam.pem 2048
Default value: undef
Data type: Boolean
Whether to use the erlang package's SSL (relies on the ssl_erl_path fact)
Default value: false
Data type: Boolean
Force use of server cipher order
Default value: true
Data type: Optional[String]
Interface for SSL listener to bind to
Default value: undef
Data type: Optional[Stdlib::Absolutepath]
Key to use for SSL.
Default value: undef
Data type: Boolean
Configures the service to only use SSL. No cleartext TCP listeners will be created. Requires that ssl => true and port => undef
Default value: false
Data type: Integer[1, 65535]
SSL management port.
Default value: 15671
Data type: Integer[1, 65535]
SSL port for RabbitMQ
Default value: 5671
Data type: Boolean
Reuse ssl sessions
Default value: true
Data type: Boolean
Use ssl secure renegotiate
Default value: true
Data type: Integer[1, 65535]
SSL stomp port.
Default value: 6164
Data type: Enum['verify_none','verify_peer']
rabbitmq.config SSL verify setting.
Default value: 'verify_none'
Data type: Boolean
rabbitmq.config fail_if_no_peer_cert
setting.
Default value: false
Data type: Enum['verify_none','verify_peer']
rabbitmq.config SSL verify setting for rabbitmq_management.
Default value: 'verify_none'
Data type: Optional[Array]
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 documentation for more information.
Default value: undef
Data type: Array
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
Default value: []
Data type: Integer[1, 65535]
The port to use for Stomp.
Default value: 6163
Data type: Boolean
Configures STOMP to only use SSL. No cleartext STOMP TCP listeners will be created. Requires setting ssl_stomp_port also.
Default value: false
Data type: Boolean
Enable to install the stomp plugin.
Default value: false
Data type: Integer
The size of the backlog on TCP connections.
Default value: 128
Data type: Boolean
Enable TCP connection keepalive for RabbitMQ service.
Default value: false
Data type: Optional[Integer]
Corresponds to recbuf in RabbitMQ tcp_listen_options
Default value: undef
Data type: Optional[Integer]
Integer, corresponds to sndbuf in RabbitMQ tcp_listen_options
Default value: undef
Data type: Boolean
Boolean to determine if we should DESTROY AND DELETE the RabbitMQ database.
Default value: false
Data type: String
OS dependent The system user the rabbitmq daemon runs as.
Default value: 'rabbitmq'
Data type: String
OS dependent The system group the rabbitmq daemon runs as.
Default value: 'rabbitmq'
Data type: Stdlib::Absolutepath
OS dependent The home directory of the rabbitmq deamon.
Default value: '/var/lib/rabbitmq'
Data type: Optional[String]
OS dependent If undef: install rabbitmqadmin via archive, otherwise via package
Default value: undef
Data type: Array
Extra options to Archive resource to download rabbitmqadmin file
Default value: []
Data type: Array
This option configures a list of users to allow access via the loopback interfaces
Default value: ['guest']
Data type: Optional[String]
Default value: undef
Data type: Optional[String]
Default value: undef
Data type: Boolean
Default value: false
Native type for managing rabbitmq bindings
rabbitmq_binding { 'binding 1': ensure => present, source => 'myexchange', destination => 'myqueue', vhost => 'myvhost', user => 'dan', password => 'bar', destination_type => 'queue', routing_key => 'key1', arguments => {}, }
rabbitmq_binding { 'binding 2': ensure => present, source => 'myexchange', destination => 'myqueue', vhost => 'myvhost', user => 'dan', password => 'bar', destination_type => 'queue', routing_key => 'key2', arguments => {}, }
rabbitmq_binding { 'myexchange@myqueue@myvhost':
user => 'dan',
password => 'bar',
destination_type => 'queue',
routing_key => '#',
arguments => {},
ensure => present,
}
Create bindings with same source / destination / vhost but different routing key using individual parameters
The following properties are available in the rabbitmq_binding
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
Valid values: %r{^\S+$}
namevar
source of binding
Valid values: %r{^\S+$}
namevar
destination of binding
Valid values: %r{^\S+$}
namevar
vhost
Default value: /
Valid values: %r{^\S*$}
namevar
binding routing_key
Valid values: %r{queue|exchange}
binding destination_type
Default value: queue
binding arguments
The following parameters are available in the rabbitmq_binding
type.
namevar
resource name, either source@destination@vhost or arbitrary name with params
Valid values: %r{^\S+$}
The user to use to connect to rabbitmq
Default value: guest
Valid values: %r{\S+}
The password to use to connect to rabbitmq
Default value: guest
Type to manage the rabbitmq erlang cookie securely
This is essentially a private type used by the rabbitmq::config class to manage the erlang cookie. It replaces the rabbitmq_erlang_cookie fact from earlier versions of this module. It manages the content of the cookie usually located at "${rabbitmq_home}/.erlang.cookie", which includes stopping the rabbitmq service and wiping out the database at "${rabbitmq_home}/mnesia" if the user agrees to it. We don't recommend using this type directly.
The following properties are available in the rabbitmq_erlang_cookie
type.
Valid values: %r{^\S+$}
Content of cookie
The following parameters are available in the rabbitmq_erlang_cookie
type.
Valid values: true
, false
Default value: false
Default value: rabbitmq
Default value: rabbitmq
Default value: /var/lib/rabbitmq
Valid values: %r{^\S+$}
Native type for managing rabbitmq exchanges
rabbitmq_exchange { 'myexchange@myvhost':
user => 'dan',
password => 'bar',
type => 'topic',
ensure => present,
internal => false,
auto_delete => false,
durable => true,
arguments => {
hash-header => 'message-distribution-hash'
}
}
The following properties are available in the rabbitmq_exchange
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
The following parameters are available in the rabbitmq_exchange
type.
Valid values: %r{^\S*@\S+$}
namevar
Name of exchange
Valid values: %r{^\S+$}
Exchange type to be set on creation
Valid values: %r{^\S+$}
Exchange durability to be set on creation
Default value: false
Valid values: %r{^\S+$}
Exchange auto delete option to be set on creation
Default value: false
Valid values: %r{^\S+$}
Exchange internal option to be set on creation
Default value: false
Exchange arguments example: {"hash-header": "message-distribution-hash"}
Valid values: %r{^\S+$}
The user to use to connect to rabbitmq
Default value: guest
Valid values: %r{\S+}
The password to use to connect to rabbitmq
Default value: guest
Type for managing rabbitmq parameters
rabbitmq_parameter { 'documentumShovel@/':
component_name => '',
value => {
'src-uri' => 'amqp://',
'src-queue' => 'my-queue',
'dest-uri' => 'amqp://remote-server',
'dest-queue' => 'another-queue',
},
}
rabbitmq_parameter { 'documentumFed@/':
component_name => 'federation-upstream',
value => {
'uri' => 'amqp://myserver',
'expires' => '360000',
},
}
The following properties are available in the rabbitmq_parameter
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
The component_name to use when setting parameter, eg: shovel or federation
A hash of values to use with the component name you are setting
The following parameters are available in the rabbitmq_parameter
type.
Valid values: %r{^\S+@\S+$}
namevar
combination of name@vhost to set parameter for
manages rabbitmq plugins
$ puppet resource rabbitmq_plugin
rabbitmq_plugin {'rabbitmq_stomp':
ensure => present,
}
rabbitmq_plugin {'rabbitmq_stomp':
ensure => present,
mode => 'offline',
}
The following properties are available in the rabbitmq_plugin
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
The following parameters are available in the rabbitmq_plugin
type.
Valid values: %r{^\S+$}
namevar
The name of the plugin to enable
Valid values: online, offline, best
Define how the plugin should be enabled regarding node status.
Default value: best
Sets the octal umask to be used while creating this resource
Default value: 0022
Type for managing rabbitmq policies
rabbitmq_policy { 'ha-all@myvhost':
pattern => '.*',
priority => 0,
applyto => 'all',
definition => {
'ha-mode' => 'all',
'ha-sync-mode' => 'automatic',
},
}
The following properties are available in the rabbitmq_policy
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
policy pattern
Valid values: all, exchanges, queues
policy apply to
Default value: all
policy definition
Valid values: %r{^\d+$}
policy priority
Default value: 0
The following parameters are available in the rabbitmq_policy
type.
Valid values: %r{^\S+@\S+$}
namevar
combination of policy@vhost to create policy for
Native type for managing rabbitmq queue
rabbitmq_queue { 'myqueue@myvhost':
ensure => present,
user => 'dan',
password => 'bar',
durable => true,
auto_delete => false,
arguments => {
x-message-ttl => 123,
x-dead-letter-exchange => 'other'
},
}
The following properties are available in the rabbitmq_queue
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
The following parameters are available in the rabbitmq_queue
type.
Valid values: %r{^\S*@\S+$}
namevar
Name of queue
Valid values: %r{true|false}
Queue is durable
Default value: true
Valid values: %r{true|false}
Queue will be auto deleted
Default value: false
Queue arguments example: {x-message-ttl => 60, x-expires => 10}
Valid values: %r{^\S+$}
The user to use to connect to rabbitmq
Default value: guest
Valid values: %r{\S+}
The password to use to connect to rabbitmq
Default value: guest
Native type for managing rabbitmq users
$ puppet resource rabbitmq_user
rabbitmq_user { 'dan':
admin => true,
password => 'bar',
}
To set the administrator tag use admin-flag.
rabbitmq_user { 'dan':
admin => true,
password => 'bar',
tags => ['monitoring', 'tag1'],
}
The following properties are available in the rabbitmq_user
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
User password to be set on creation and validated each run
Valid values: %r{true|false}
whether or not user should be an admin
Default value: false
additional tags for the user
Default value: []
The following parameters are available in the rabbitmq_user
type.
Valid values: %r{^\S+$}
namevar
Name of user
Type for managing rabbitmq user permissions
rabbitmq_user_permissions { 'dan@myvhost':
configure_permission => '.*',
read_permission => '.*',
write_permission => '.*',
}
The following properties are available in the rabbitmq_user_permissions
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
regexp representing configuration permissions
regexp representing read permissions
regexp representing write permissions
The following parameters are available in the rabbitmq_user_permissions
type.
Valid values: %r{^\S+@\S+$}
namevar
combination of user@vhost to grant privileges to
Native type for managing rabbitmq vhosts
$ puppet resource rabbitmq_vhost`
rabbitmq_vhost { 'myvhost':
ensure => present,
}
The following properties are available in the rabbitmq_vhost
type.
Valid values: present, absent
The basic property that the resource should be in.
Default value: present
The following parameters are available in the rabbitmq_vhost
type.
Valid values: %r{^\S+$}
namevar
The name of the vhost to add