[refactor] Unify apt-get update
into one resource
Before, there were two Execs that did an `apt-get update`, `Exec[refresh_apt]` and `Exec[apt_updated]`, which were triggered by different resources. This changes gets rid of the first one, and all resources now depend on `Exec[apt_updated]`.
This commit is contained in:
parent
fa1751c4de
commit
f12b007edd
10 changed files with 43 additions and 53 deletions
38
README
38
README
|
@ -17,6 +17,14 @@ Ubuntu support is lagging behind but not absent either.
|
|||
|
||||
! Upgrade Notice !
|
||||
|
||||
* 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.
|
||||
You can include the `apt::update` class if you want it to be run every time.
|
||||
|
||||
* The `apt::upgrade_package` now doesn't automatically call an Exec['apt_updated']
|
||||
anymore, so you would need to include `apt::update` now by hand.
|
||||
|
||||
* The apt::codename parameter has been removed. In its place, the
|
||||
debian_codename fact may be overridden via an environment variable. This
|
||||
will affect all other debian_* facts, and achieve the same result.
|
||||
|
@ -188,15 +196,6 @@ Class parameters:
|
|||
If this variable is set the default repositories list ("main contrib non-free")
|
||||
is overriden.
|
||||
|
||||
* disable_update
|
||||
|
||||
Disable "apt-get update" which is normally triggered by apt::upgrade_package
|
||||
and apt::dist_upgrade.
|
||||
|
||||
Note that nodes can be updated once a day by using
|
||||
APT::Periodic::Update-Package-Lists "1";
|
||||
in i.e. /etc/apt/apt.conf.d/80_apt_update_daily.
|
||||
|
||||
* custom_preferences
|
||||
|
||||
For historical reasons (Debian Lenny's version of APT did not support the use
|
||||
|
@ -296,9 +295,6 @@ 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.
|
||||
|
||||
When this class is included the APT indexes are updated on every
|
||||
Puppet run due to the author's lack of Puppet wizardry.
|
||||
|
||||
apt::dist_upgrade::initiator
|
||||
----------------------------
|
||||
|
||||
|
@ -555,18 +551,22 @@ Exec['apt_updated']
|
|||
-------------------
|
||||
|
||||
After this point the APT indexes are up-to-date.
|
||||
This resource is set to `refreshonly => true` so it is not run on
|
||||
every puppetrun. To run this every time, you can include the `apt::update`
|
||||
class.
|
||||
|
||||
This resource is usually used like this to ensure current packages are
|
||||
installed by Package resources:
|
||||
|
||||
include apt::update
|
||||
Package { require => Exec['apt_updated'] }
|
||||
include apt::update
|
||||
Package { require => Exec['apt_updated'] }
|
||||
|
||||
Note that nodes can be updated once a day by using
|
||||
|
||||
APT::Periodic::Update-Package-Lists "1";
|
||||
|
||||
in i.e. /etc/apt/apt.conf.d/80_apt_update_daily.
|
||||
|
||||
Please note that the apt::upgrade_package define automatically uses
|
||||
this resource so you don't have to manage this yourself if you need to
|
||||
make sure APT indexes are up-to-date before a package upgrade is
|
||||
attempted, but don't want "apt-get update" to happen on every Puppet
|
||||
run.
|
||||
|
||||
Tests
|
||||
=====
|
||||
|
|
|
@ -38,7 +38,7 @@ define apt::apt_conf(
|
|||
|
||||
if $refresh_apt {
|
||||
File["/etc/apt/apt.conf.d/${name}"] {
|
||||
notify => Exec['refresh_apt'],
|
||||
notify => Exec['apt_updated'],
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,9 @@
|
|||
class apt::dist_upgrade {
|
||||
|
||||
if $apt::disable_update == false {
|
||||
include apt::update
|
||||
}
|
||||
|
||||
$req = $apt::disable_update ? {
|
||||
true => undef,
|
||||
default => Exec['apt_updated'],
|
||||
}
|
||||
|
||||
exec { 'apt_dist-upgrade':
|
||||
command => '/usr/bin/apt-get -q -y -o \'DPkg::Options::=--force-confold\' dist-upgrade',
|
||||
refreshonly => true,
|
||||
require => $req
|
||||
before => Exec['apt_updated']
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,18 +5,11 @@ class apt::dot_d_directories {
|
|||
'/etc/apt/apt.conf.d':
|
||||
ensure => directory,
|
||||
checksum => mtime,
|
||||
notify => Exec['refresh_apt'];
|
||||
notify => Exec['apt_updated'];
|
||||
'/etc/apt/sources.list.d':
|
||||
ensure => directory,
|
||||
checksum => mtime,
|
||||
notify => Exec['refresh_apt'];
|
||||
}
|
||||
|
||||
exec {
|
||||
# "&& sleep 1" is workaround for older(?) clients
|
||||
'refresh_apt':
|
||||
command => '/usr/bin/apt-get update && sleep 1',
|
||||
refreshonly => true,
|
||||
notify => Exec['apt_updated'];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -50,7 +50,7 @@ class apt(
|
|||
# additional sources should be included via the apt::sources_list define
|
||||
'/etc/apt/sources.list':
|
||||
content => $sources_content,
|
||||
notify => Exec['refresh_apt'],
|
||||
notify => Exec['apt_updated'],
|
||||
owner => root,
|
||||
group => 0,
|
||||
mode => '0644';
|
||||
|
@ -137,4 +137,16 @@ class apt(
|
|||
|
||||
# workaround for preseeded_package component
|
||||
file { [ '/var/cache', '/var/cache/local', '/var/cache/local/preseeding' ]: ensure => directory }
|
||||
|
||||
exec { 'update_apt':
|
||||
command => '/usr/bin/apt-get update && /usr/bin/apt-get autoclean',
|
||||
require => [
|
||||
File['/etc/apt/apt.conf.d', '/etc/apt/preferences' ],
|
||||
File['/etc/apt/sources.list'] ],
|
||||
loglevel => 'info',
|
||||
refreshonly => true,
|
||||
# Another Semaphor for all packages to reference
|
||||
alias => [ 'apt_updated', 'refresh_apt']
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,6 @@ define apt::key ($source, $ensure = 'present') {
|
|||
"/etc/apt/trusted.gpg.d/${name}":
|
||||
ensure => $ensure,
|
||||
source => $source,
|
||||
notify => Exec['refresh_apt'],
|
||||
notify => Exec['apt_updated'],
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,6 +8,6 @@ define apt::key::plain ($source) {
|
|||
exec { "apt-key add '${apt::apt_base_dir}/keys/${name}'":
|
||||
subscribe => File["${apt::apt_base_dir}/keys/${name}"],
|
||||
refreshonly => true,
|
||||
notify => Exec['refresh_apt'],
|
||||
notify => Exec['apt_updated'],
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ define apt::preferences_snippet (
|
|||
file { "/etc/apt/preferences.d/${name}":
|
||||
ensure => $ensure,
|
||||
owner => root, group => 0, mode => '0644',
|
||||
before => Exec['refresh_apt'];
|
||||
before => Exec['apt_updated'];
|
||||
}
|
||||
|
||||
case $source {
|
||||
|
|
|
@ -23,7 +23,7 @@ define apt::sources_list (
|
|||
file { "/etc/apt/sources.list.d/${realname}.list":
|
||||
ensure => $ensure,
|
||||
owner => root, group => 0, mode => '0644',
|
||||
notify => Exec['refresh_apt'],
|
||||
notify => Exec['apt_updated'],
|
||||
}
|
||||
|
||||
if $source {
|
||||
|
|
|
@ -1,13 +1,7 @@
|
|||
class apt::update {
|
||||
class apt::update inherits ::apt {
|
||||
|
||||
exec { 'update_apt':
|
||||
command => '/usr/bin/apt-get update && /usr/bin/apt-get autoclean',
|
||||
require => [
|
||||
File['/etc/apt/apt.conf.d', '/etc/apt/preferences' ],
|
||||
File['/etc/apt/sources.list'] ],
|
||||
loglevel => info,
|
||||
# Another Semaphor for all packages to reference
|
||||
alias => 'apt_updated'
|
||||
Exec['update_apt'] {
|
||||
refreshonly => false
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue