rabbitmq
-
-
-
-
-
-
-
-
-
-
Table of Contents
-
-
-- Overview
-- Module Description - What the module does and why it is useful
-- Setup - The basics of getting started with rabbitmq
-
-
-- Usage - Configuration options and additional functionality
-- Reference - An under-the-hood peek at what the module is doing and how
-- Limitations - OS compatibility, etc.
-
-
-- Development - Guide for contributing to the module
-
-
-
Overview
-
-
This module manages RabbitMQ (www.rabbitmq.com)
-
-
Module Description
-
-
The rabbitmq module sets up rabbitmq and has a number of providers to manage
-everything from vhosts to exchanges after setup.
-
-
This module has been tested against 3.5.x and 3.6.x (as well as earlier
-versions) and is known to not support all features against versions
-prior to 2.7.1.
-
-
Setup
-
-
What rabbitmq affects
-
-
-- rabbitmq repository files.
-- rabbitmq package.
-- rabbitmq configuration file.
-- rabbitmq service.
-
-
-
Usage
-
-
All options and configuration can be done through interacting with the parameters
-on the main rabbitmq class.
-These are now documented via Puppet Strings
-
-
For convenience, some examples are duplicated here:
-
-
rabbitmq class
-
-
To begin with the rabbitmq class controls the installation of rabbitmq. In here
-you can control many parameters relating to the package and service, such as
-disabling puppet support of the service:
-
-
class { 'rabbitmq':
- service_manage => false,
- port => '5672',
- delete_guest_user => true,
-}
-
-
-
Environment Variables
-
-
To use RabbitMQ Environment Variables, use the parameters environment_variables
e.g.:
-
-
class { 'rabbitmq':
- port => 5672,
- environment_variables => {
- 'NODENAME' => 'node01',
- 'SERVICENAME' => 'RabbitMQ'
- }
-}
-
-
-
Variables Configurable in rabbitmq.config
-
-
To change RabbitMQ Config Variables in rabbitmq.config, use the parameters config_variables
e.g.:
-
-
class { 'rabbitmq':
- port => 5672,
- config_variables => {
- 'hipe_compile' => true,
- 'frame_max' => 131072,
- 'log_levels' => "[{connection, info}]"
- }
-}
-
-
-
To change Erlang Kernel Config Variables in rabbitmq.config, use the parameters
-config_kernel_variables
e.g.:
-
-
class { 'rabbitmq':
- port => 5672,
- config_kernel_variables => {
- 'inet_dist_listen_min' => 9100,
- 'inet_dist_listen_max' => 9105,
- }
-}
-
-
-
To change Management Plugin Config Variables in rabbitmq.config, use the parameters
-config_management_variables
e.g.:
-
-
class { 'rabbitmq':
- config_management_variables => {
- 'rates_mode' => 'basic',
- }
-}
-
-
-
Additional Variables Configurable in rabbitmq.config
-
-
To change Additional Config Variables in rabbitmq.config, use the parameter
-config_additional_variables
e.g.:
-
-
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:
-
-
% Additional config
- {autocluster, [{consul_service, "rabbit"},{cluster_name, "rabbit"}]},
- {foo, [{bar, "baz"}]}
-
-
-
(This is required for the autocluster plugin
-
-
Clustering
-
-
To use RabbitMQ clustering facilities, use the rabbitmq parameters
-config_cluster
, cluster_nodes
, and cluster_node_type
, e.g.:
-
-
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,
-}
-
-
-
rabbitmq_user
-
-
query all current users: $ puppet resource rabbitmq_user
-
-
rabbitmq_user { 'dan':
- admin => true,
- password => 'bar',
-}
-
-
-
Optional parameter tags will set further rabbitmq tags like monitoring, policymaker, etc.
-To set the administrator tag use admin-flag.
-
-
rabbitmq_user { 'dan':
- admin => true,
- password => 'bar',
- tags => ['monitoring', 'tag1'],
-}
-
-
-
rabbitmq_vhost
-
-
query all current vhosts: $ puppet resource rabbitmq_vhost
-
-
rabbitmq_vhost { 'myvhost':
- ensure => present,
-}
-
-
-
rabbitmq_exchange
-
-
rabbitmq_exchange { 'myexchange@myvhost':
- ensure => present,
- user => 'dan',
- password => 'bar',
- type => 'topic',
- internal => false,
- auto_delete => false,
- durable => true,
- arguments => {
- hash-header => 'message-distribution-hash'
- }
-}
-
-
-
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'
- },
-}
-
-
-
rabbitmq_binding
-
-
rabbitmq_binding { 'myexchange@myqueue@myvhost':
- ensure => present,
- user => 'dan',
- password => 'bar',
- destination_type => 'queue',
- routing_key => '#',
- arguments => {},
-}
-
-
-
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_user_permissions
-
-
rabbitmq_user_permissions { 'dan@myvhost':
- configure_permission => '.*',
- read_permission => '.*',
- write_permission => '.*',
-}
-
-
-
rabbitmq_policy
-
-
rabbitmq_policy { 'ha-all@myvhost':
- pattern => '.*',
- priority => 0,
- applyto => 'all',
- definition => {
- 'ha-mode' => 'all',
- 'ha-sync-mode' => 'automatic',
- },
-}
-
-
-
rabbitmq_plugin
-
-
query all currently enabled plugins $ puppet resource rabbitmq_plugin
-
-
rabbitmq_plugin {'rabbitmq_stomp':
- ensure => present,
-}
-
-
-
rabbitmq_parameter
-
-
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',
- },
- }
-
-
-
Reference
-
-
Classes
-
-
-- rabbitmq: Main class for installation and service management.
-- rabbitmq::config: Main class for rabbitmq configuration/management.
-- rabbitmq::install: Handles package installation.
-- rabbitmq::params: Different configuration data for different systems.
-- rabbitmq::service: Handles the rabbitmq service.
-- rabbitmq::repo::apt: Handles apt repo for Debian systems.
-- rabbitmq::repo::rhel: Handles rpm repo for Redhat systems.
-
-
-
Module dependencies
-
-
If running CentOS/RHEL, ensure the epel repo, or another repo containing a
-suitable Erlang version, is present. On Debian systems, puppetlabs/apt
-(>=2.0.0 < 5.0.0) is a soft dependency.
-
-
To have a suitable erlang version installed on RedHat and Debian systems,
-you have to install another puppet module from http://forge.puppetlabs.com/garethr/erlang with:
-
-
puppet module install garethr-erlang
-
-
-
This module handles the packages for erlang.
-To use the module, add the following snippet to your site.pp or an appropriate profile class:
-
-
For RedHat systems:
-
-
include 'erlang'
-class { 'erlang': epel_enable => true}
-
-
-
For Debian systems:
-
-
include 'erlang'
-package { 'erlang-base':
- ensure => 'latest',
-}
-
-
-
This module also depends on voxpupuli/archive to install rabbitmqadmin.
-
-
Development
-
-
This module is maintained by Vox Pupuli. Voxpupuli
-welcomes new contributions to this module, especially those that include
-documentation and rspec tests. We are happy to provide guidance if necessary.
-
-
Please see CONTRIBUTING for more details.
-
-
Authors
-
-
-