]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/rabbitmq/manifests/init.pp
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / manifests / init.pp
diff --git a/3rdparty/modules/rabbitmq/manifests/init.pp b/3rdparty/modules/rabbitmq/manifests/init.pp
new file mode 100644 (file)
index 0000000..4e115f9
--- /dev/null
@@ -0,0 +1,238 @@
+# Main rabbitmq class
+class rabbitmq(
+  $admin_enable               = $rabbitmq::params::admin_enable,
+  $cluster_node_type          = $rabbitmq::params::cluster_node_type,
+  $cluster_nodes              = $rabbitmq::params::cluster_nodes,
+  $config                     = $rabbitmq::params::config,
+  $config_cluster             = $rabbitmq::params::config_cluster,
+  $config_path                = $rabbitmq::params::config_path,
+  $config_stomp               = $rabbitmq::params::config_stomp,
+  $default_user               = $rabbitmq::params::default_user,
+  $default_pass               = $rabbitmq::params::default_pass,
+  $delete_guest_user          = $rabbitmq::params::delete_guest_user,
+  $env_config                 = $rabbitmq::params::env_config,
+  $env_config_path            = $rabbitmq::params::env_config_path,
+  $erlang_cookie              = $rabbitmq::params::erlang_cookie,
+  $interface                  = $rabbitmq::params::interface,
+  $management_port            = $rabbitmq::params::management_port,
+  $node_ip_address            = $rabbitmq::params::node_ip_address,
+  $package_apt_pin            = $rabbitmq::params::package_apt_pin,
+  $package_ensure             = $rabbitmq::params::package_ensure,
+  $package_gpg_key            = $rabbitmq::params::package_gpg_key,
+  $package_name               = $rabbitmq::params::package_name,
+  $package_provider           = $rabbitmq::params::package_provider,
+  $package_source             = undef,
+  $repos_ensure               = $rabbitmq::params::repos_ensure,
+  $manage_repos               = $rabbitmq::params::manage_repos,
+  $plugin_dir                 = $rabbitmq::params::plugin_dir,
+  $rabbitmq_user              = $rabbitmq::params::rabbitmq_user,
+  $rabbitmq_group             = $rabbitmq::params::rabbitmq_group,
+  $rabbitmq_home              = $rabbitmq::params::rabbitmq_home,
+  $port                       = $rabbitmq::params::port,
+  $tcp_keepalive              = $rabbitmq::params::tcp_keepalive,
+  $service_ensure             = $rabbitmq::params::service_ensure,
+  $service_manage             = $rabbitmq::params::service_manage,
+  $service_name               = $rabbitmq::params::service_name,
+  $ssl                        = $rabbitmq::params::ssl,
+  $ssl_only                   = $rabbitmq::params::ssl_only,
+  $ssl_cacert                 = $rabbitmq::params::ssl_cacert,
+  $ssl_cert                   = $rabbitmq::params::ssl_cert,
+  $ssl_key                    = $rabbitmq::params::ssl_key,
+  $ssl_port                   = $rabbitmq::params::ssl_port,
+  $ssl_interface              = $rabbitmq::params::ssl_interface,
+  $ssl_management_port        = $rabbitmq::params::ssl_management_port,
+  $ssl_stomp_port             = $rabbitmq::params::ssl_stomp_port,
+  $ssl_verify                 = $rabbitmq::params::ssl_verify,
+  $ssl_fail_if_no_peer_cert   = $rabbitmq::params::ssl_fail_if_no_peer_cert,
+  $ssl_versions               = $rabbitmq::params::ssl_versions,
+  $ssl_ciphers                = $rabbitmq::params::ssl_ciphers,
+  $stomp_ensure               = $rabbitmq::params::stomp_ensure,
+  $ldap_auth                  = $rabbitmq::params::ldap_auth,
+  $ldap_server                = $rabbitmq::params::ldap_server,
+  $ldap_user_dn_pattern       = $rabbitmq::params::ldap_user_dn_pattern,
+  $ldap_other_bind            = $rabbitmq::params::ldap_other_bind,
+  $ldap_use_ssl               = $rabbitmq::params::ldap_use_ssl,
+  $ldap_port                  = $rabbitmq::params::ldap_port,
+  $ldap_log                   = $rabbitmq::params::ldap_log,
+  $ldap_config_variables      = $rabbitmq::params::ldap_config_variables,
+  $stomp_port                 = $rabbitmq::params::stomp_port,
+  $version                    = $rabbitmq::params::version,
+  $wipe_db_on_cookie_change   = $rabbitmq::params::wipe_db_on_cookie_change,
+  $cluster_partition_handling = $rabbitmq::params::cluster_partition_handling,
+  $file_limit                 = $rabbitmq::params::file_limit,
+  $environment_variables      = $rabbitmq::params::environment_variables,
+  $config_variables           = $rabbitmq::params::config_variables,
+  $config_kernel_variables    = $rabbitmq::params::config_kernel_variables,
+  $key_content                = undef,
+) inherits rabbitmq::params {
+
+  validate_bool($admin_enable)
+  # Validate install parameters.
+  validate_re($package_apt_pin, '^(|\d+)$')
+  validate_string($package_ensure)
+  validate_string($package_gpg_key)
+  validate_string($package_name)
+  validate_string($package_provider)
+  validate_bool($repos_ensure)
+  validate_re($version, '^\d+\.\d+\.\d+(-\d+)*$') # Allow 3 digits and optional -n postfix.
+  # Validate config parameters.
+  validate_re($cluster_node_type, '^(ram|disc|disk)$') # Both disc and disk are valid http://www.rabbitmq.com/clustering.html
+  validate_array($cluster_nodes)
+  validate_string($config)
+  validate_absolute_path($config_path)
+  validate_bool($config_cluster)
+  validate_bool($config_stomp)
+  validate_string($default_user)
+  validate_string($default_pass)
+  validate_bool($delete_guest_user)
+  validate_string($env_config)
+  validate_absolute_path($env_config_path)
+  validate_string($erlang_cookie)
+  if ! is_integer($management_port) {
+    validate_re($management_port, '\d+')
+  }
+  validate_string($node_ip_address)
+  validate_absolute_path($plugin_dir)
+  if ! is_integer($port) {
+    validate_re($port, ['\d+','UNSET'])
+  }
+  if ! is_integer($stomp_port) {
+    validate_re($stomp_port, '\d+')
+  }
+  validate_bool($wipe_db_on_cookie_change)
+  validate_bool($tcp_keepalive)
+  if ! is_integer($file_limit) {
+    validate_re($file_limit, '^(unlimited|infinity)$', '$file_limit must be an integer, \'unlimited\', or \'infinity\'.')
+  }
+  # Validate service parameters.
+  validate_re($service_ensure, '^(running|stopped)$')
+  validate_bool($service_manage)
+  validate_string($service_name)
+  validate_bool($ssl)
+  validate_bool($ssl_only)
+  validate_string($ssl_cacert)
+  validate_string($ssl_cert)
+  validate_string($ssl_key)
+  validate_array($ssl_ciphers)
+  if ! is_integer($ssl_port) {
+    validate_re($ssl_port, '\d+')
+  }
+  if ! is_integer($ssl_management_port) {
+    validate_re($ssl_management_port, '\d+')
+  }
+  if ! is_integer($ssl_stomp_port) {
+    validate_re($ssl_stomp_port, '\d+')
+  }
+  validate_bool($stomp_ensure)
+  validate_bool($ldap_auth)
+  validate_string($ldap_server)
+  validate_string($ldap_user_dn_pattern)
+  validate_string($ldap_other_bind)
+  validate_hash($ldap_config_variables)
+  validate_bool($ldap_use_ssl)
+  validate_re($ldap_port, '\d+')
+  validate_bool($ldap_log)
+  validate_hash($environment_variables)
+  validate_hash($config_variables)
+  validate_hash($config_kernel_variables)
+
+  if $ssl_only and ! $ssl {
+    fail('$ssl_only => true requires that $ssl => true')
+  }
+
+  if $config_stomp and $ssl_stomp_port and ! $ssl {
+    warning('$ssl_stomp_port requires that $ssl => true and will be ignored')
+  }
+
+  if $ssl_versions {
+    if $ssl {
+      validate_array($ssl_versions)
+    } else {
+      fail('$ssl_versions requires that $ssl => true')
+    }
+  }
+
+  # This needs to happen here instead of params.pp because
+  # $package_source needs to override the constructed value in params.pp
+  if $package_source { # $package_source was specified by user so use that one
+    $real_package_source = $package_source
+  # NOTE(bogdando) do not enforce the source value for yum provider #MODULES-1631
+  } elsif $package_provider != 'yum' {
+    # package_source was not specified, so construct it, unless the provider is 'yum'
+    case $::osfamily {
+      'RedHat', 'SUSE': {
+        $base_version   = regsubst($version,'^(.*)-\d$','\1')
+        $real_package_source = "http://www.rabbitmq.com/releases/rabbitmq-server/v${base_version}/rabbitmq-server-${version}.noarch.rpm"
+      }
+      default: { # Archlinux and Debian
+        $real_package_source = ''
+      }
+    }
+  } else { # for yum provider, use the source as is
+    $real_package_source = $package_source
+  }
+
+  include '::rabbitmq::install'
+  include '::rabbitmq::config'
+  include '::rabbitmq::service'
+  include '::rabbitmq::management'
+
+  if $manage_repos != undef {
+    warning('$manage_repos is now deprecated. Please use $repos_ensure instead')
+  }
+
+  if $manage_repos != false {
+    case $::osfamily {
+      'RedHat', 'SUSE':
+        { include '::rabbitmq::repo::rhel' }
+      'Debian': {
+        class { '::rabbitmq::repo::apt' :
+          key_source  => $package_gpg_key,
+          key_content => $key_content,
+        }
+      }
+      default:
+        { }
+    }
+  }
+
+  if $admin_enable and $service_manage {
+    include '::rabbitmq::install::rabbitmqadmin'
+
+    rabbitmq_plugin { 'rabbitmq_management':
+      ensure  => present,
+      require => Class['rabbitmq::install'],
+      notify  => Class['rabbitmq::service'],
+    }
+
+    Class['::rabbitmq::service'] -> Class['::rabbitmq::install::rabbitmqadmin']
+    Class['::rabbitmq::install::rabbitmqadmin'] -> Rabbitmq_exchange<| |>
+  }
+
+  if $stomp_ensure {
+    rabbitmq_plugin { 'rabbitmq_stomp':
+      ensure  => present,
+      require => Class['rabbitmq::install'],
+      notify  => Class['rabbitmq::service'],
+    }
+  }
+
+  if ($ldap_auth) {
+    rabbitmq_plugin { 'rabbitmq_auth_backend_ldap':
+      ensure  => present,
+      require => Class['rabbitmq::install'],
+      notify  => Class['rabbitmq::service'],
+    }
+  }
+
+  anchor { 'rabbitmq::begin': }
+  anchor { 'rabbitmq::end': }
+
+  Anchor['rabbitmq::begin'] -> Class['::rabbitmq::install']
+    -> Class['::rabbitmq::config'] ~> Class['::rabbitmq::service']
+    -> Class['::rabbitmq::management'] -> Anchor['rabbitmq::end']
+
+  # Make sure the various providers have their requirements in place.
+  Class['::rabbitmq::install'] -> Rabbitmq_plugin<| |>
+
+}