aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-02-04 10:23:55 -0500
committerDan Prince <dprince@redhat.com>2015-02-04 10:23:55 -0500
commit4acd81ae2bb760b8c72f098fd4f674d43385b96b (patch)
tree8f712e9ad4dbcb157ae729f0393410276db7d636
parent994461b45130ed3f6f6981985aeac443b05e11f2 (diff)
Add norpm package provider and helper class.
This patch adds a new norpm package provider that extends the Puppet provided default RPM package provider and stubs out all of the package install, update, purging so that no packages will get installed. This may be useful when deploying pre-built images where we effectively just want to use Puppet for configuration (not installation). Includes a ::tripleo::package_provider class that will assist in cleanly disabling package installation via hiera.
-rw-r--r--lib/puppet/provider/package/norpm.rb36
-rw-r--r--manifests/package_provider.pp39
2 files changed, 75 insertions, 0 deletions
diff --git a/lib/puppet/provider/package/norpm.rb b/lib/puppet/provider/package/norpm.rb
new file mode 100644
index 0000000..1616e57
--- /dev/null
+++ b/lib/puppet/provider/package/norpm.rb
@@ -0,0 +1,36 @@
+# Copyright 2015 Red Hat, Inc.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+require 'puppet/provider/package'
+
+Puppet::Type.type(:package).provide :norpm, :source => :rpm, :parent => :rpm do
+ desc "RPM packaging provider that does not install anything."
+
+ def latest
+ @resource.fail "'latest' is unsupported by this provider."
+ end
+
+ def install
+ true
+ end
+
+ def uninstall
+ true
+ end
+
+ def update
+ true
+ end
+
+end
diff --git a/manifests/package_provider.pp b/manifests/package_provider.pp
new file mode 100644
index 0000000..173ae61
--- /dev/null
+++ b/manifests/package_provider.pp
@@ -0,0 +1,39 @@
+# Copyright 2015 Red Hat, Inc.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# == Class: tripleo::packages
+#
+# A class that effectively disables distro package installation.
+#
+# === Parameters:
+#
+# [*disable_package_install*]
+# Defaults to false. Set to true to disable package installation.
+class tripleo::package_provider (
+ $disable_package_install = false,
+) {
+
+ if $disable_package_install {
+ case $::osfamily {
+ 'RedHat': {
+ Package { provider => 'norpm' }
+ }
+ default: {
+ warning('tripleo::packages does not support this distribution.')
+ }
+ }
+ }
+
+}