dev/provisioning/modules/yum/manifests/group.pp
changeset 28 b0b56e0f8c7f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/yum/manifests/group.pp	Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,46 @@
+# Define: yum::group
+#
+# This definition installs or removes yum package group.
+#
+# Parameters:
+#   [*ensure*]   - specifies if package group should be
+#                  present (installed) or absent (purged)
+#
+# Actions:
+#
+# Requires:
+#   RPM based system
+#
+# Sample usage:
+#   yum::group { 'X Window System':
+#     ensure  => present,
+#   }
+#
+define yum::group (
+  $ensure = present
+) {
+  Exec {
+    path        => '/bin:/usr/bin:/sbin:/usr/sbin',
+    environment => 'LC_ALL=C'
+  }
+
+  case $ensure {
+    present,installed: {
+      exec { "yum-groupinstall-${name}":
+        command => "yum -y groupinstall '${name}'",
+        unless  => "yum grouplist '${name}' | egrep -i '^Installed.+Groups:$'",
+      }
+    }
+
+    absent,purged: {
+      exec { "yum-groupremove-${name}":
+        command => "yum -y groupremove '${name}'",
+        onlyif  => "yum grouplist '${name}' | egrep -i '^Installed.+Groups:$'",
+      }
+    }
+
+    default: {
+      fail("Invalid ensure state: ${ensure}")
+    }
+  }
+}