dev/provisioning/modules/yum/manifests/init.pp
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/yum/manifests/init.pp	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,90 @@
+# Class: yum
+#
+# Manage Yum configuration.
+#
+# Parameters:
+#   [*keepcache*]         - Yum option keepcache
+#   [*debuglevel*]        - Yum option debuglevel
+#   [*exactarch*]         - Yum option exactarch
+#   [*obsoletes*]         - Yum option obsoletes
+#   [*gpgcheck*]          - Yum option gpgcheck
+#   [*installonly_limit*] - Yum option installonly_limit
+#   [*keep_kernel_devel*] - On old kernels purge keep devel packages.
+#
+# Actions:
+#
+# Requires:
+#   RPM based system
+#
+# Sample usage:
+#   class { 'yum':
+#     installonly_limit => 2,
+#   }
+#
+class yum (
+  $keepcache         = $yum::params::keepcache,
+  $debuglevel        = $yum::params::debuglevel,
+  $exactarch         = $yum::params::exactarch,
+  $obsoletes         = $yum::params::obsoletes,
+  $gpgcheck          = $yum::params::gpgcheck,
+  $installonly_limit = $yum::params::installonly_limit,
+  $keep_kernel_devel = $yum::params::keep_kernel_devel
+) inherits yum::params {
+
+  validate_bool($keepcache, $exactarch, $obsoletes, $gpgcheck)
+  validate_bool($keep_kernel_devel)
+
+  unless is_integer($installonly_limit) {
+    validate_string($installonly_limit)
+  }
+
+  unless is_integer($debuglevel) {
+    validate_string($debuglevel)
+  }
+
+  # configure Yum
+  yum::config { 'keepcache':
+    ensure => bool2num($keepcache),
+  }
+
+  yum::config { 'debuglevel':
+    ensure => $debuglevel,
+  }
+
+  yum::config { 'exactarch':
+    ensure => bool2num($exactarch)
+  }
+
+  yum::config { 'obsoletes':
+    ensure => bool2num($obsoletes)
+  }
+
+  yum::config { 'gpgcheck':
+    ensure => bool2num($gpgcheck)
+  }
+
+  yum::config { 'installonly_limit':
+    ensure => $installonly_limit,
+    notify => Exec['package-cleanup_oldkernels'],
+  }
+
+  # cleanup old kernels
+  ensure_packages(['yum-utils'])
+
+  $_pc_cmd = delete_undef_values([
+    '/usr/bin/package-cleanup',
+    '--oldkernels',
+    "--count=${installonly_limit}",
+    '-y',
+    $keep_kernel_devel ? {
+      true    => '--keepdevel',
+      default => undef,
+    },
+  ])
+
+  exec { 'package-cleanup_oldkernels':
+    command     => shellquote($_pc_cmd),
+    refreshonly => true,
+    require     => Package['yum-utils'],
+  }
+}