diff options
-rw-r--r-- | README.md | 97 | ||||
-rw-r--r-- | manifests/apticron.pp | 2 | ||||
-rw-r--r-- | manifests/cron/base.pp | 20 | ||||
-rw-r--r-- | manifests/cron/dist_upgrade.pp | 21 | ||||
-rw-r--r-- | manifests/cron/download.pp | 27 | ||||
-rw-r--r-- | manifests/dist_upgrade.pp | 5 | ||||
-rw-r--r-- | manifests/listchanges.pp | 2 | ||||
-rw-r--r-- | templates/Debian/apticron.erb (renamed from templates/Debian/apticron_wheezy.erb) | 2 | ||||
l--------- | templates/Debian/apticron_jessie.erb | 1 | ||||
l--------- | templates/Debian/apticron_sid.erb | 1 | ||||
-rw-r--r-- | templates/Debian/apticron_squeeze.erb | 82 | ||||
-rw-r--r-- | templates/Debian/listchanges.erb (renamed from templates/Debian/listchanges_lenny.erb) | 0 | ||||
l--------- | templates/Debian/listchanges_jessie.erb | 1 | ||||
l--------- | templates/Debian/listchanges_sid.erb | 1 | ||||
l--------- | templates/Debian/listchanges_squeeze.erb | 1 | ||||
l--------- | templates/Debian/listchanges_wheezy.erb | 1 |
16 files changed, 72 insertions, 192 deletions
@@ -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) @@ -23,12 +22,13 @@ * [apt::preseeded_package](#apt-preseeded_package) * [apt::sources_list](#apt-sources_list) * [apt::key](#apt-key) - * [apt::key::plain](#apt-key-plain) + * [`apt::key::plain`](#apt-key-plain) * [apt::upgrade_package](#apt-upgrade_package) * [Resources](#ressources) * [File\['apt_config'\]](#fileapt_config) * [Exec\['apt_updated'\]](#execapt_updated) * [Tests](#tests) + * [Acceptance Tests](#acceptance-tests) * [Licensing](#licensing) @@ -49,10 +49,13 @@ 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. - + * The `disable_update` parameter has been removed. The main apt class defaults to *not* run an `apt-get update` on every run anyway so this parameter seems useless. @@ -76,17 +79,16 @@ Ubuntu support is lagging behind but not absent either. instantiating the class with those variables instead. For example, if you had the following in your manifests: - $apt_debian_url = 'http://localhost:9999/debian/' - $apt_use_next_release = true - include apt + $apt_debian_url = 'http://localhost:9999/debian/' + $apt_use_next_release = true + include apt you will need to remove the variables, and the include and instead do the following: - class { - 'apt': - debian_url => 'http://localhost:9999/debian/', - use_next_release => true; + class { 'apt': + debian_url => 'http://localhost:9999/debian/', + use_next_release => true; } previously, you could manually set `$lsbdistcodename` which would enable forced @@ -98,26 +100,24 @@ Ubuntu support is lagging behind but not absent either. you to trigger upgrades: include apt::dist_upgrade - class { - 'apt': - codename => 'wheezy', - notify => Exec['apt_dist-upgrade']; + class { 'apt': + codename => 'wheezy', + notify => Exec['apt_dist-upgrade']; } * the `apticron` class has been moved to a parameterized class. if you were including this class before, you will need to move to instantiating the class instead. For example, if you had the following in your manifests: - $apticron_email = 'foo@example.com' - $apticron_notifynew = '1' - ... any $apticron_* variables - include apticron + $apticron_email = 'foo@example.com' + $apticron_notifynew = '1' + ... any $apticron_* variables + include apticron you will need to remove the variables, and the include and instead do the following: - class { - 'apt::apticron': + class { 'apt::apticron': email => 'foo@example.com', notifynew => '1'; } @@ -127,16 +127,15 @@ Ubuntu support is lagging behind but not absent either. to move to instantiating the class with those variables instead. For example, if you had the following in your manifests: - $apt_listchanges_email = 'foo@example.com' - ... any $apt_listchanges_* variables - include apt::listchanges + $apt_listchanges_email = 'foo@example.com' + ... any $apt_listchanges_* variables + include apt::listchanges you will need to remove the variables, and the include and instead do the following: - class { - 'apt::listchanges': - email => 'foo@example.com'; + class { 'apt::listchanges': + email => 'foo@example.com'; } * the `apt::proxy_client` class has been moved to a paramterized class. if you @@ -144,18 +143,17 @@ Ubuntu support is lagging behind but not absent either. to move to instantiating the class with those variables instead. For example, if you had the following in your manifests: - $apt_proxy = 'http://proxy.domain' - $apt_proxy_port = 666 - include apt::proxy_client + $apt_proxy = 'http://proxy.domain' + $apt_proxy_port = 666 + include apt::proxy_client you will need to remove the variables, and the include and instead do the following: - class { - 'apt::proxy_client': - proxy => 'http://proxy.domain', - port => '666'; - } + class { 'apt::proxy_client': + proxy => 'http://proxy.domain', + port => '666'; + } # Requirements<a name="requirements"></a> @@ -325,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 @@ -360,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> @@ -567,7 +560,7 @@ use `apt::key::plain`. The `.gpg` extension is compulsory for `apt` to pickup the key properly. -## apt::key::plain<a name="apt-key-plain"></a> +## `apt::key::plain`<a name="apt-key-plain"></a> Deploys a secure apt OpenPGP key. This usually accompanies the sources.list snippets above for third party repositories. For example, @@ -645,7 +638,7 @@ To run pupept rspec tests: bundle exec rake spec Verbose Output: - + bundle exec rake spec SPEC_OPTS='--format documentation' Using different facter/puppet versions: @@ -670,7 +663,7 @@ Run tests on default node (Debian Jessie): Run different nodeset: BEAKER_set="debian-8-x86_64-docker" bundle exec rspec spec/acceptance/*_spec.rb - + # Licensing<a name="licensing"></a> diff --git a/manifests/apticron.pp b/manifests/apticron.pp index 9c94f9c..89709a8 100644 --- a/manifests/apticron.pp +++ b/manifests/apticron.pp @@ -1,6 +1,6 @@ class apt::apticron( $ensure_version = 'installed', - $config = "apt/${::operatingsystem}/apticron_${::debian_codename}.erb", + $config = "apt/${::operatingsystem}/apticron.erb", $email = 'root', $diff_only = '1', $listchanges_profile = 'apticron', 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/listchanges.pp b/manifests/listchanges.pp index e64bb1b..ecbbe6d 100644 --- a/manifests/listchanges.pp +++ b/manifests/listchanges.pp @@ -1,6 +1,6 @@ class apt::listchanges( $ensure_version = 'installed', - $config = "apt/${::operatingsystem}/listchanges_${::debian_codename}.erb", + $config = "apt/${::operatingsystem}/listchanges.erb", $frontend = 'mail', $email = 'root', $confirm = '0', diff --git a/templates/Debian/apticron_wheezy.erb b/templates/Debian/apticron.erb index 655854e..c6d3853 100644 --- a/templates/Debian/apticron_wheezy.erb +++ b/templates/Debian/apticron.erb @@ -46,7 +46,7 @@ IPADDRESSNUM="<%= v %>" # # IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1" <% unless (v=scope.lookupvar('apt::apticron::ipaddresses')).to_s == "false" -%> -IPADDRESSES=<%= v %>" +IPADDRESSES="<%= v %>" <% end -%> # diff --git a/templates/Debian/apticron_jessie.erb b/templates/Debian/apticron_jessie.erb deleted file mode 120000 index a9a3a6f..0000000 --- a/templates/Debian/apticron_jessie.erb +++ /dev/null @@ -1 +0,0 @@ -apticron_wheezy.erb
\ No newline at end of file diff --git a/templates/Debian/apticron_sid.erb b/templates/Debian/apticron_sid.erb deleted file mode 120000 index a9a3a6f..0000000 --- a/templates/Debian/apticron_sid.erb +++ /dev/null @@ -1 +0,0 @@ -apticron_wheezy.erb
\ No newline at end of file diff --git a/templates/Debian/apticron_squeeze.erb b/templates/Debian/apticron_squeeze.erb deleted file mode 100644 index 05b7c9b..0000000 --- a/templates/Debian/apticron_squeeze.erb +++ /dev/null @@ -1,82 +0,0 @@ -# apticron.conf -# -# set EMAIL to a space separated list of addresses which will be notified of -# impending updates -# -EMAIL="<%= scope.lookupvar('apt::apticron::email') %>" - - -# -# Set DIFF_ONLY to "1" to only output the difference of the current run -# compared to the last run (ie. only new upgrades since the last run). If there -# are no differences, no output/email will be generated. By default, apticron -# will output everything that needs to be upgraded. -# -DIFF_ONLY="<%= scope.lookupvar('apt::apticron::diff_only') %>" - -# -# Set LISTCHANGES_PROFILE if you would like apticron to invoke apt-listchanges -# with the --profile option. You should add a corresponding profile to -# /etc/apt/listchanges.conf -# -LISTCHANGES_PROFILE="<%= scope.lookupvar('apt::apticron::listchanges_profile') %>" - -# -# Set SYSTEM if you would like apticron to use something other than the output -# of "hostname -f" for the system name in the mails it generates -# -# SYSTEM="foobar.example.com" -<% unless (v=scope.lookupvar('apt::apticron::system')).to_s == "false" -%> -SYSTEM="<%= v %>" -<% end -%> - - -# -# Set IPADDRESSNUM if you would like to configure the maximal number of IP -# addresses apticron displays. The default is to display 1 address of each -# family type (inet, inet6), if available. -# -# IPADDRESSNUM="1" -<% unless (v=scope.lookupvar('apt::apticron::ipaddressnum')).to_s == "false" -%> -IPADDRESSNUM="<%= v %>" -<% end -%> - - -# -# Set IPADDRESSES to a whitespace separated list of reachable addresses for -# this system. By default, apticron will try to work these out using the -# "ip" command -# -# IPADDRESSES="192.0.2.1 2001:db8:1:2:3::1" -<% unless (v=scope.lookupvar('apt::apticron::ipaddresses')).to_s == "false" -%> -IPADDRESSES="<%= v %>" -<% end -%> - - -# -# Set NOTIFY_HOLDS="0" if you don't want to be notified about new versions of -# packages on hold in your system. The default behavior is downloading and -# listing them as any other package. -# -# NOTIFY_HOLDS="0" -NOTIFY_HOLDS="<%= scope.lookupvar('apt::apticron::notifyholds') %>" - -# -# Set NOTIFY_NEW="0" if you don't want to be notified about packages which -# are not installed in your system. Yes, it's possible! There are some issues -# related to systems which have mixed stable/unstable sources. In these cases -# apt-get will consider for example that packages with "Priority: -# required"/"Essential: yes" in unstable but not in stable should be installed, -# so they will be listed in dist-upgrade output. Please take a look at -# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=531002#44 -# -# NOTIFY_NEW="0" -NOTIFY_NEW="<%= scope.lookupvar('apt::apticron::notifynew') %>" - -# -# Set CUSTOM_SUBJECT if you want to replace the default subject used in -# the notification e-mails. This may help filtering/sorting client-side e-mail. -# -# CUSTOM_SUBJECT="" -CUSTOM_SUBJECT="<%= scope.lookupvar('apt::apticron::customsubject') %>" - diff --git a/templates/Debian/listchanges_lenny.erb b/templates/Debian/listchanges.erb index 1025dd0..1025dd0 100644 --- a/templates/Debian/listchanges_lenny.erb +++ b/templates/Debian/listchanges.erb diff --git a/templates/Debian/listchanges_jessie.erb b/templates/Debian/listchanges_jessie.erb deleted file mode 120000 index 74ab496..0000000 --- a/templates/Debian/listchanges_jessie.erb +++ /dev/null @@ -1 +0,0 @@ -listchanges_lenny.erb
\ No newline at end of file diff --git a/templates/Debian/listchanges_sid.erb b/templates/Debian/listchanges_sid.erb deleted file mode 120000 index 74ab496..0000000 --- a/templates/Debian/listchanges_sid.erb +++ /dev/null @@ -1 +0,0 @@ -listchanges_lenny.erb
\ No newline at end of file diff --git a/templates/Debian/listchanges_squeeze.erb b/templates/Debian/listchanges_squeeze.erb deleted file mode 120000 index 74ab496..0000000 --- a/templates/Debian/listchanges_squeeze.erb +++ /dev/null @@ -1 +0,0 @@ -listchanges_lenny.erb
\ No newline at end of file diff --git a/templates/Debian/listchanges_wheezy.erb b/templates/Debian/listchanges_wheezy.erb deleted file mode 120000 index 74ab496..0000000 --- a/templates/Debian/listchanges_wheezy.erb +++ /dev/null @@ -1 +0,0 @@ -listchanges_lenny.erb
\ No newline at end of file |