Add RabbitMQ Plugin Support

These plugins are modeled using a defined resource type named
rabbitmq::plugin.  They notify the service and require the package.
However, this is not ideal since the defined type is establishing
relationships to the resources inside the rabbitmq class.

I plan to refactor rabbitmq into rabbitmq::service to address this
issue.  Then, I'll be able to use class level relationships.
This commit is contained in:
Jeff McCune 2011-03-22 15:22:21 -07:00
parent 63917a5294
commit f930e74824
6 changed files with 66 additions and 3 deletions

View File

@ -24,15 +24,23 @@ class rabbitmq::params(
# This is the RabbitMQ Server Version
if $version == 'UNSET' {
$version_real = '2.3.1-1'
$version_real = '2.3.1'
$pkg_ensure = 'present'
} else {
$version_real = $version
$pkg_ensure = $version
}
$packages = [ 'rabbitmq-server' ]
$service = 'rabbitmq-server'
case $operatingsystem {
centos, redhat, oel: {
$packages = 'rabbitmq-server'
$service = 'rabbitmq-server'
$plugin_dir = "/usr/lib/rabbitmq/lib/rabbitmq_server-${version_real}/plugins"
}
default: {
fail("operatingsystem $operatingsystem is not supported")
}
}
}

View File

@ -0,0 +1,48 @@
# Define: rabbitmq::plugin
#
# This defined resource type manages plugins for RabbitMQ
#
# Parameters:
#
# Actions:
#
# Requires:
#
# Sample Usage:
#
define rabbitmq::plugin(
$ensure='UNSET',
$source='UNSET'
) {
$plugin_dir = $::rabbitmq::params::plugin_dir
$service = $::rabbitmq::params::service
$packages = $::rabbitmq::params::packages
if $source == 'UNSET' {
$source_real = "puppet:///modules/rabbitmq/plugins/${name}"
} else {
$source_real = $source
}
if $ensure == 'UNSET' {
$ensure_real = 'present'
} else {
if $ensure in [ 'present', 'absent' ] {
$ensure_real = $ensure
} else {
fail("ensure must be present or absent. Received: ${ensure}")
}
}
file { "${plugin_dir}/${name}":
ensure => $ensure_real,
source => $source_real,
owner => '0',
group => '0',
mode => '0644',
require => Package[$packages],
notify => Service[$service],
}
}

View File

@ -1,8 +1,15 @@
node default {
$rabbitmq_plugins = [ 'amqp_client-2.3.1.ez', 'rabbit_stomp-2.3.1.ez' ]
class { 'rabbitmq':
config => template('rabbitmq/rabbitmq.conf'),
}
# Required for MCollective
rabbitmq::plugin { $rabbitmq_plugins:
ensure => present,
}
}