dev/provisioning/modules/mysql/manifests/server/mysqltuner.pp
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/mysql/manifests/server/mysqltuner.pp	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,52 @@
+#
+class mysql::server::mysqltuner(
+  $ensure  = 'present',
+  $version = 'v1.3.0',
+  $source  = undef,
+) {
+
+  if $source {
+    $_version = $source
+    $_source  = $source
+  } else {
+    $_version = $version
+    $_source  = "https://github.com/major/MySQLTuner-perl/raw/${version}/mysqltuner.pl"
+  }
+
+  if $ensure == 'present' {
+    # $::puppetversion doesn't exist in puppet 4.x so would break strict
+    # variables
+    if ! $::settings::strict_variables {
+      $_puppetversion = $::puppetversion
+    } else {
+      # defined only works with puppet >= 3.5.0, so don't use it unless we're
+      # actually using strict variables
+      $_puppetversion = defined('$puppetversion') ? {
+        true    => $::puppetversion,
+        default => undef,
+      }
+    }
+    # see https://tickets.puppetlabs.com/browse/ENTERPRISE-258
+    if $_puppetversion and $_puppetversion =~ /Puppet Enterprise/ and versioncmp($_puppetversion, '3.8.0') < 0 {
+      class { 'staging':
+        path => '/opt/mysql_staging',
+      }
+    } else {
+      class { 'staging': }
+    }
+
+    staging::file { "mysqltuner-${_version}":
+      source => $_source,
+    }
+    file { '/usr/local/bin/mysqltuner':
+      ensure  => $ensure,
+      mode    => '0550',
+      source  => "${::staging::path}/mysql/mysqltuner-${_version}",
+      require => Staging::File["mysqltuner-${_version}"],
+    }
+  } else {
+    file { '/usr/local/bin/mysqltuner':
+      ensure => $ensure,
+    }
+  }
+}