--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dev/provisioning/modules/yum/manifests/versionlock.pp Fri Jan 15 15:35:00 2016 +0100
@@ -0,0 +1,56 @@
+# Define: yum::versionlock
+#
+# This definition locks package from updates.
+#
+# Parameters:
+# [*ensure*] - specifies if versionlock should be present, absent or exclude
+# [*path*] - configuration of Yum plugin versionlock
+#
+# Actions:
+#
+# Requires:
+# RPM based system, Yum versionlock plugin
+#
+# Sample usage:
+# yum::versionlock { '0:bash-4.1.2-9.el6_2.*':
+# ensure => present,
+# }
+#
+define yum::versionlock (
+ $ensure = present,
+ $path = '/etc/yum/pluginconf.d/versionlock.list'
+) {
+ require yum::plugin::versionlock
+
+ if ($name =~ /^[0-9]+:.+\*$/) {
+ $_name = $name
+ } elsif ($name =~ /^[0-9]+:.+-.+-.+\./) {
+ $_name= "${name}*"
+ } else {
+ fail('Package name must be formated as \'EPOCH:NAME-VERSION-RELEASE.ARCH\'')
+ }
+
+ case $ensure {
+ present,absent,exclude: {
+ if ($ensure == present) or ($ensure == absent) {
+ file_line { "versionlock.list-${name}":
+ ensure => $ensure,
+ line => $_name,
+ path => $path,
+ }
+ }
+
+ if ($ensure == exclude) or ($ensure == absent) {
+ file_line { "versionlock.list-!${name}":
+ ensure => $ensure,
+ line => "!${_name}",
+ path => $path,
+ }
+ }
+ }
+
+ default: {
+ fail("Invalid ensure state: ${ensure}")
+ }
+ }
+}