From 0bdff36d8baf375f1d5628a9e52ea2bee9e9db55 Mon Sep 17 00:00:00 2001 From: Dan Prince Date: Thu, 16 May 2013 15:51:31 -0400 Subject: [PATCH] Add packagekit module. This module supports automatic upgrades on RHEL/Centos slaves. It works by installing PackageKit-cron and updating the config file to enable automatic updates. PackageKit-cron runs once a day via cron. Fixes LP Bug #1180948. Change-Id: I901ebf5f48fabee9456333ade0c141beacac62e6 Reviewed-on: https://review.openstack.org/29422 Reviewed-by: James E. Blair Approved: Jeremy Stanley Reviewed-by: Jeremy Stanley Tested-by: Jenkins --- manifests/cron.pp | 41 +++++++++++++++++++++++++++++ manifests/init.pp | 27 +++++++++++++++++++ manifests/params.pp | 27 +++++++++++++++++++ templates/packagekit-background.erb | 17 ++++++++++++ 4 files changed, 112 insertions(+) create mode 100644 manifests/cron.pp create mode 100644 manifests/init.pp create mode 100644 manifests/params.pp create mode 100644 templates/packagekit-background.erb diff --git a/manifests/cron.pp b/manifests/cron.pp new file mode 100644 index 0000000..16721a3 --- /dev/null +++ b/manifests/cron.pp @@ -0,0 +1,41 @@ +# Copyright 2013 Red Hat, Inc. +# +# 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: packagekit::cron +# +class packagekit::cron( + $package_ensure = present, + $enabled = 'yes', + $check_only = 'no', + $mailto = false, + $system_name = false +) inherits packagekit { + + include packagekit::params + + package { $::packagekit::params::cron_package: + ensure => $package_ensure, + } + + file { $::packagekit::params::cron_config_file: + ensure => present, + content => template("${module_name}/packagekit-background.erb"), + mode => '0644', + group => 'root', + owner => 'root', + replace => true, + require => Package[$::packagekit::params::cron_package], + } + +} diff --git a/manifests/init.pp b/manifests/init.pp new file mode 100644 index 0000000..f6883be --- /dev/null +++ b/manifests/init.pp @@ -0,0 +1,27 @@ +# Copyright 2013 Red Hat, Inc. +# +# 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: packagekit +# +class packagekit( + $package_ensure = present +) { + + include packagekit::params + + package { $::packagekit::params::package: + ensure => $package_ensure, + } + +} diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..f490fe0 --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,27 @@ +# Copyright 2013 Red Hat, Inc. +# +# 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: packagekit::params +class packagekit::params { + case $::osfamily { + 'RedHat': { + $package = 'PackageKit' + $cron_package = 'PackageKit-cron' + $cron_config_file = '/etc/sysconfig/packagekit-background' + } + default: { + fail("Unsupported osfamily: ${::osfamily} The 'packagekit' module only supports osfamily RedHat.") + } + } +} diff --git a/templates/packagekit-background.erb b/templates/packagekit-background.erb new file mode 100644 index 0000000..cc2ee25 --- /dev/null +++ b/templates/packagekit-background.erb @@ -0,0 +1,17 @@ +# should we attempt to do this? (valid: yes|no) +ENABLED=<%= enabled %> + +# don't install, just check (valid: yes|no) +CHECK_ONLY=<%= check_only %> + +# if MAILTO is set, the mail command is used to deliver PackageKit output +# by default MAILTO is unset, so crond mails the output by itself +<% if mailto then %> +MAILTO=<%= mailto %> +<% end %> + +# you may set SYSTEMNAME if you want your PackageKit emails tagged differently +# default is output of hostname command +<% if system_name then %> +SYSTEM_NAME=<%= system_name %> +<% end %>