Update 3rdparty rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / manifests / install / rabbitmqadmin.pp
index bf545ee..408d2a1 100644 (file)
@@ -1,35 +1,67 @@
 #
 class rabbitmq::install::rabbitmqadmin {
 
-  if($rabbitmq::ssl) {
-    $management_port = $rabbitmq::ssl_management_port
-  }
-  else {
-    $management_port = $rabbitmq::management_port
-  }
+  if $rabbitmq::rabbitmqadmin_package {
+    package{'rabbitmqadmin':
+      ensure => 'present',
+      name   => $rabbitmq::rabbitmqadmin_package,
+    }
+  } else {
 
-  $default_user = $rabbitmq::default_user
-  $default_pass = $rabbitmq::default_pass
-  $protocol = $rabbitmq::ssl ? { false => 'http', default => 'https' }
+    $python_package = $rabbitmq::params::python_package
+    # Some systems (e.g., Ubuntu 16.04) don't ship Python 2 by default
+    if $rabbitmq::manage_python {
+      ensure_packages([$python_package])
+      $rabbitmqadmin_require = [Archive['rabbitmqadmin'], Package[$python_package]]
+    } else {
+      $rabbitmqadmin_require = Archive['rabbitmqadmin']
+    }
 
-  staging::file { 'rabbitmqadmin':
-    target      => "${rabbitmq::rabbitmq_home}/rabbitmqadmin",
-    source      => "${protocol}://${default_user}:${default_pass}@localhost:${management_port}/cli/rabbitmqadmin",
-    curl_option => '-k --noproxy localhost --retry 30 --retry-delay 6',
-    timeout     => '180',
-    wget_option => '--no-proxy',
-    require     => [
-      Class['rabbitmq::service'],
-      Rabbitmq_plugin['rabbitmq_management']
-    ],
-  }
+    if($rabbitmq::ssl and $rabbitmq::management_ssl) {
+      $management_port = $rabbitmq::ssl_management_port
+      $protocol        = 'https'
+    } else {
+      $management_port = $rabbitmq::management_port
+      $protocol        = 'http'
+    }
 
-  file { '/usr/local/bin/rabbitmqadmin':
-    owner   => 'root',
-    group   => '0',
-    source  => "${rabbitmq::rabbitmq_home}/rabbitmqadmin",
-    mode    => '0755',
-    require => Staging::File['rabbitmqadmin'],
-  }
+    $default_user = $rabbitmq::default_user
+    $default_pass = $rabbitmq::default_pass
+    $management_ip_address = $rabbitmq::management_ip_address
+    $archive_options = $rabbitmq::archive_options
 
+    if !($management_ip_address) {
+      # Pull from localhost if we don't have an explicit bind address
+      $curl_prefix = ''
+      $sanitized_ip = '127.0.0.1'
+    } elsif is_ipv6_address($management_ip_address) {
+      $curl_prefix  = "--noproxy ${management_ip_address} -g -6"
+      $sanitized_ip = join(enclose_ipv6(any2array($management_ip_address)), ',')
+    } else {
+      $curl_prefix  = "--noproxy ${management_ip_address}"
+      $sanitized_ip = $management_ip_address
+    }
+
+    archive { 'rabbitmqadmin':
+      path             => "${rabbitmq::rabbitmq_home}/rabbitmqadmin",
+      source           => "${protocol}://${sanitized_ip}:${management_port}/cli/rabbitmqadmin",
+      username         => $default_user,
+      password         => $default_pass,
+      allow_insecure   => true,
+      download_options => $archive_options,
+      cleanup          => false,
+      require          => [
+        Class['rabbitmq::service'],
+        Rabbitmq_plugin['rabbitmq_management']
+      ],
+    }
+
+    file { '/usr/local/bin/rabbitmqadmin':
+      owner   => 'root',
+      group   => '0',
+      source  => "${rabbitmq::rabbitmq_home}/rabbitmqadmin",
+      mode    => '0755',
+      require => $rabbitmqadmin_require,
+    }
+  }
 }