summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorintrigeri <intrigeri@boum.org>2016-07-01 12:28:51 +0000
committerintrigeri <intrigeri@boum.org>2016-07-01 12:28:51 +0000
commita18c940b0195e76a7640818a7c7d92d289380c36 (patch)
tree2ac3437aab244cc955b895e09424aa2f47a3e5be
parent328a6215a3a7728b39bbebc6a85d6371a23b9301 (diff)
parent1a87e2f7d489fe01e84e2fad6d368dbbc52f1995 (diff)
Merge remote-tracking branch 'shared/master' into drop_lenny_squeeze_support
-rw-r--r--README.md29
-rw-r--r--manifests/cron/base.pp20
-rw-r--r--manifests/cron/dist_upgrade.pp21
-rw-r--r--manifests/cron/download.pp27
-rw-r--r--manifests/dist_upgrade.pp5
-rw-r--r--manifests/reboot_required_notify.pp22
-rw-r--r--manifests/reboot_required_notify/jessie.pp28
-rw-r--r--manifests/reboot_required_notify/wheezy.pp23
8 files changed, 94 insertions, 81 deletions
diff --git a/README.md b/README.md
index 3d094c3..9405bd8 100644
--- a/README.md
+++ b/README.md
@@ -8,7 +8,6 @@
* [Classes](#classes)
* [apt](#apt)
* [apt::apticron](#apt-apticron)
- * [apt::cron::download](#apt-cron-download)
* [apt::cron::dist_upgrade](#apt-cron-dist_upgrade)
* [apt::dist_upgrade](#apt-dist_upgrade)
* [apt::dist_upgrade::initiator](#apt-dist_upgrade-initiator)
@@ -50,6 +49,9 @@ Ubuntu support is lagging behind but not absent either.
## Upgrade Notice<a name="upgrade-notice"></a>
+ * The `$apt_cron_hours` global variable is deprecated.
+ Use `apt::cron::dist_upgrade`'s `cron_hours` parameter instead.
+
* The default value of the `$repos` parameter was removed since the logic is
now in the `apt::params` class. If you have explicitly set `$repos` to
'auto' in your manifests, you should remove this.
@@ -321,30 +323,20 @@ Example usage:
}
-## apt::cron::download<a name="apt-cron-download"></a>
+## apt::cron::dist_upgrade<a name="apt-cron-dist_upgrade"></a>
-This class sets up `cron-apt` so that it downloads upgradable packages, does not
-actually do any upgrade and emails when the output changes.
+This class sets up cron-apt so that it dist-upgrades the system and
+emails when upgrades are performed.
`cron-apt` defaults to run at 4 AM. You may want to set the
-`$apt_cron_hours` variable before you include the class: its value will
+`$cron_hours` class parameter before you include the class: its value will
be passed as the "hours" parameter of a cronjob. Example:
# Run cron-apt every three hours
- $apt_cron_hours = '*/3'
+ class { 'apt::cron::dist_upgrade': cron_hours => '*/3' }
Note that the default 4 AM cronjob won't be disabled.
-
-## apt::cron::dist_upgrade<a name="apt-cron-dist_upgrade"></a>
-
-This class sets up cron-apt so that it dist-upgrades the system and
-emails when upgrades are performed.
-
-See [apt::cron::download](#apt-cron-download) above if you need to run `cron-apt` more often
-than once a day.
-
-
## apt::dist_upgrade<a name="apt-dist_upgrade"></a>
This class provides the `Exec['apt_dist-upgrade']` resource that
@@ -356,6 +348,11 @@ classes may inherit from this one and add to its subscription list
using the plusignment (`+>`) operator. A real-world example can be
seen in the `apt::dist_upgrade::initiator` source.
+Parameters:
+
+ * timeout: specified in seconds; the maximum time the `dist-upgrade`
+ command should take. If the command takes longer than the timeout,
+ the command is considered to have failed and will be stopped.
## apt::dist_upgrade::initiator<a name="apt-dist_upgrade-initiator"></a>
diff --git a/manifests/cron/base.pp b/manifests/cron/base.pp
deleted file mode 100644
index 39fc306..0000000
--- a/manifests/cron/base.pp
+++ /dev/null
@@ -1,20 +0,0 @@
-class apt::cron::base {
-
- package { 'cron-apt': ensure => installed }
-
- case $apt_cron_hours {
- '': {}
- default: {
- # cron-apt defaults to run every night at 4 o'clock
- # so we try not to run at the same time.
- cron { 'apt_cron_every_N_hours':
- command => 'test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt',
- user => root,
- hour => "${apt_cron_hours}",
- minute => 10,
- require => Package['cron-apt'],
- }
- }
- }
-
-}
diff --git a/manifests/cron/dist_upgrade.pp b/manifests/cron/dist_upgrade.pp
index 74403bb..e1a03ed 100644
--- a/manifests/cron/dist_upgrade.pp
+++ b/manifests/cron/dist_upgrade.pp
@@ -1,4 +1,23 @@
-class apt::cron::dist_upgrade inherits apt::cron::base {
+class apt::cron::dist_upgrade (
+ $cron_hours = '',
+) {
+
+ package { 'cron-apt': ensure => installed }
+
+ case $cron_hours {
+ '': {}
+ default: {
+ # cron-apt defaults to run every night at 4 o'clock
+ # so we try not to run at the same time.
+ cron { 'apt_cron_every_N_hours':
+ command => 'test -x /usr/sbin/cron-apt && /usr/sbin/cron-apt',
+ user => root,
+ hour => "${cron_hours}",
+ minute => 10,
+ require => Package['cron-apt'],
+ }
+ }
+ }
$action = "autoclean -y
dist-upgrade -y -o APT::Get::Show-Upgraded=true -o 'DPkg::Options::=--force-confold'
diff --git a/manifests/cron/download.pp b/manifests/cron/download.pp
deleted file mode 100644
index 4a19fec..0000000
--- a/manifests/cron/download.pp
+++ /dev/null
@@ -1,27 +0,0 @@
-class apt::cron::download inherits apt::cron::base {
-
- $action = "autoclean -y
-dist-upgrade -d -y -o APT::Get::Show-Upgraded=true
-"
-
- file { '/etc/cron-apt/action.d/4-dist-upgrade':
- ensure => absent,
- }
-
- file { '/etc/cron-apt/action.d/3-download':
- content => $action,
- require => Package[cron-apt],
- owner => root,
- group => 0,
- mode => '0644';
- }
-
- file { '/etc/cron-apt/config.d/MAILON':
- content => "MAILON=changes\n",
- require => Package[cron-apt],
- owner => root,
- group => 0,
- mode => '0644';
- }
-
-}
diff --git a/manifests/dist_upgrade.pp b/manifests/dist_upgrade.pp
index 19c031e..3061fb8 100644
--- a/manifests/dist_upgrade.pp
+++ b/manifests/dist_upgrade.pp
@@ -1,8 +1,11 @@
-class apt::dist_upgrade {
+class apt::dist_upgrade (
+ $timeout = 300,
+) {
exec { 'apt_dist-upgrade':
command => '/usr/bin/apt-get -q -y -o \'DPkg::Options::=--force-confold\' dist-upgrade',
refreshonly => true,
+ timeout => $timeout,
before => Exec['apt_updated']
}
diff --git a/manifests/reboot_required_notify.pp b/manifests/reboot_required_notify.pp
index 722e8a5..efd8aeb 100644
--- a/manifests/reboot_required_notify.pp
+++ b/manifests/reboot_required_notify.pp
@@ -1,21 +1,11 @@
class apt::reboot_required_notify {
- # This package installs the script that created /var/run/reboot-required*.
- # This script (/usr/share/update-notifier/notify-reboot-required) is
- # triggered e.g. by kernel packages.
- package { 'update-notifier-common':
- ensure => installed,
- }
-
- # cron-apt defaults to run every night at 4 o'clock
- # plus some random time <1h.
- # so we check if a reboot is required a bit later.
- cron { 'apt_reboot_required_notify':
- command => 'if [ -f /var/run/reboot-required ]; then echo "Reboot required\n" ; cat /var/run/reboot-required.pkgs ; fi',
- user => root,
- hour => 5,
- minute => 20,
- require => Package['update-notifier-common'],
+ if versioncmp($::operatingsystemmajrelease, 8) >= 0 {
+ class { 'apt::reboot_required_notify::jessie': }
+ # Clean up systems that were upgraded from Wheezy or earlier:
+ class { 'apt::reboot_required_notify::wheezy': ensure => absent }
+ } else {
+ class { 'apt::reboot_required_notify::wheezy': }
}
}
diff --git a/manifests/reboot_required_notify/jessie.pp b/manifests/reboot_required_notify/jessie.pp
new file mode 100644
index 0000000..2de6b62
--- /dev/null
+++ b/manifests/reboot_required_notify/jessie.pp
@@ -0,0 +1,28 @@
+class apt::reboot_required_notify::jessie ($ensure = present) {
+
+ if $::operatingsystemmajrelease == 8 and ! $::apt::use_backports {
+ fail('apt::reboot_required_notify requires $apt::use_backports on Jessie')
+ }
+
+ $pinning_ensure = $::operatingsystemmajrelease ? {
+ 8 => present,
+ default => absent,
+ }
+ apt::preferences_snippet { 'reboot-notifier':
+ ensure => $pinning_ensure,
+ pin => 'release o=Debian Backports,a=jessie-backports',
+ priority => 991,
+ }
+
+ # On Jessie and newer, this package installs the script that created
+ # /var/run/reboot-required*.
+ # This script (/usr/share/update-notifier/notify-reboot-required) is
+ # triggered e.g. by kernel packages.
+ # This package also sends a daily email to the administrator when a system
+ # reboot is required, e.g. due to a kernel update.
+ package { 'reboot-notifier':
+ ensure => $ensure,
+ require => Apt::Preferences_snippet['reboot-notifier'],
+ }
+
+}
diff --git a/manifests/reboot_required_notify/wheezy.pp b/manifests/reboot_required_notify/wheezy.pp
new file mode 100644
index 0000000..06998ef
--- /dev/null
+++ b/manifests/reboot_required_notify/wheezy.pp
@@ -0,0 +1,23 @@
+class apt::reboot_required_notify::wheezy ($ensure = present) {
+
+ # On Wheezy and older, this package installs the script that created
+ # /var/run/reboot-required*.
+ # This script (/usr/share/update-notifier/notify-reboot-required) is
+ # triggered e.g. by kernel packages.
+ package { 'update-notifier-common':
+ ensure => $ensure,
+ }
+
+ # cron-apt defaults to run every night at 4 o'clock
+ # plus some random time <1h.
+ # so we check if a reboot is required a bit later.
+ cron { 'apt_reboot_required_notify':
+ ensure => $ensure,
+ command => 'if [ -f /var/run/reboot-required ]; then echo "Reboot required\n" ; cat /var/run/reboot-required.pkgs ; fi',
+ user => root,
+ hour => 5,
+ minute => 20,
+ require => Package['update-notifier-common'],
+ }
+
+}