aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README62
-rw-r--r--manifests/dist_upgrade.pp9
-rw-r--r--manifests/init.pp15
-rw-r--r--manifests/preferences.pp20
-rw-r--r--manifests/preferences/absent.pp1
-rw-r--r--manifests/preferences_snippet.pp12
-rw-r--r--manifests/upgrade_package.pp13
7 files changed, 78 insertions, 54 deletions
diff --git a/README b/README
index 3cd341d..f2cda47 100644
--- a/README
+++ b/README
@@ -90,8 +90,6 @@ Requirements
This module needs:
- the lsb module: git://labs.riseup.net/shared-lsb
-- the common module: git://labs.riseup.net/shared-common
-- the concat module: git://labs.riseup.net/shared-concat
By default, on normal hosts, this module sets the configuration option
DSelect::Clean to 'auto'. On virtual servers, the value is set by default to
@@ -117,6 +115,15 @@ site_apt/files/some.host.com/03clean_vserver)
Variables
=========
+$apt_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_sources_list
--------------------
@@ -267,7 +274,7 @@ $apt_cron_hours variable 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"
+ $apt_cron_hours = '*/3'
Note that the default 4 AM cronjob won't be disabled.
@@ -303,9 +310,9 @@ file's content changes. The initiator file is copied from the first
available source amongst the following ones, in decreasing priority
order:
-- puppet:///site_apt/${::fqdn}/upgrade_initiator
-- puppet:///site_apt/upgrade_initiator
-- puppet:///apt/upgrade_initiator
+- puppet:///modules/site_apt/${::fqdn}/upgrade_initiator
+- puppet:///modules/site_apt/upgrade_initiator
+- puppet:///modules/apt/upgrade_initiator
This is useful when one does not want to setup a fully automated
upgrade process but still needs a way to manually trigger full
@@ -332,11 +339,11 @@ the following parameterized variables, which can be changed:
version = "present"
config = "apt/${::operatingsystem}/listchanges_${::lsbrelease}.erb"
- frontend = "pager"
- email = "root"
- confirm = "0"
- saveseen = "/var/lib/apt/listchanges.db"
- which = "both"
+ frontend = 'pager'
+ email = 'root'
+ confirm = 0
+ saveseen = '/var/lib/apt/listchanges.db'
+ which = 'both'
Example usage:
class { 'apt::listchanges': email => "foo@example.com" }
@@ -381,36 +388,47 @@ meta-parameter to define content inline or with the help of a template.
Example:
- apt::apt_conf { "80download-only":
- source => "puppet:///modules/site_apt/80download-only",
+ apt::apt_conf { '80download-only':
+ source => 'puppet:///modules/site_apt/80download-only',
}
apt::preferences_snippet
------------------------
-A way to add pinning information to /etc/apt/preferences
+A way to add pinning information to files in /etc/apt/preferences.d/
Example:
- apt::preferences_snippet{
+ apt::preferences_snippet {
'irssi-plugin-otr':
release => 'lenny-backports',
priority => 999;
}
- apt::preferences_snippet{
+ apt::preferences_snippet {
'unstable_fallback':
package => '*',
release => 'unstable',
priority => 1;
}
- apt::preferences_snippet{
+ apt::preferences_snippet {
'ttdnsd':
pin => 'origin deb.torproject.org',
priority => 999;
}
+The names of the resources will be used as the names of the files in the
+preferences.d directory, so you should ensure that resource names follow the
+prescribed naming scheme.
+
+From apt_preferences(5):
+ Note that the files in the /etc/apt/preferences.d directory are parsed in
+ alphanumeric ascending order and need to obey the following naming
+ convention: The files have no or "pref" as filename extension and which
+ only contain alphanumeric, hyphen (-), underscore (_) and period (.)
+ characters - otherwise they will be silently ignored.
+
apt::preseeded_package
----------------------
@@ -425,8 +443,8 @@ following in your manifest:
You can also specify the content of the seed via the content parameter,
for example:
- apt::preseeded_package { "apticron":
- content => "apticron apticron/notification string root@example.com",
+ apt::preseeded_package { 'apticron':
+ content => 'apticron apticron/notification string root@example.com',
}
apt::sources_list
@@ -467,12 +485,12 @@ upgrade_package { "perl":
Resources
=========
-Concat[apt_config]
+File['apt_config']
------------------
Use this resource to depend on or add to a completed apt configuration
-Exec[apt_updated]
+Exec['apt_updated']
-----------------
After this point the APT indexes are up-to-date.
@@ -481,7 +499,7 @@ This resource is usually used like this to ensure current packages are
installed by Package resources:
include apt::update
- Package { require => Exec[apt_updated] }
+ Package { require => Exec['apt_updated'] }
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
diff --git a/manifests/dist_upgrade.pp b/manifests/dist_upgrade.pp
index 9e26769..ed25b0b 100644
--- a/manifests/dist_upgrade.pp
+++ b/manifests/dist_upgrade.pp
@@ -1,11 +1,16 @@
class apt::dist_upgrade {
- include apt::update
+ if $apt::disable_update == false {
+ include apt::update
+ }
exec { 'apt_dist-upgrade':
command => "/usr/bin/apt-get -q -y -o 'DPkg::Options::=--force-confold' dist-upgrade",
refreshonly => true,
- require => Exec['apt_updated'],
+ require => $apt::disable_update ? {
+ true => undef,
+ default => Exec['apt_updated'],
+ }
}
}
diff --git a/manifests/init.pp b/manifests/init.pp
index 3de4d9e..c098ef3 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -8,13 +8,14 @@ class apt(
$use_volatile = false,
$include_src = false,
$use_next_release = false,
- $debian_url = 'http://cdn.debian.net/debian/',
+ $debian_url = 'http://http.debian.net/debian/',
$security_url = 'http://security.debian.org/',
$backports_url = 'http://backports.debian.org/debian-backports/',
$volatile_url = 'http://volatile.debian.org/debian-volatile/',
$ubuntu_url = 'http://archive.ubuntu.com/ubuntu',
$repos = 'auto',
- $custom_preferences = ''
+ $custom_preferences = '',
+ $disable_update = false
){
case $::operatingsystem {
'debian': {
@@ -44,6 +45,9 @@ class apt(
$codename = $::lsbdistcodename
$release = $::lsbdistrelease
}
+ 'n/a': {
+ fail("Unknown lsbdistcodename reported by facter: '$lsbdistcodename', please fix this by setting this variable in your manifest.")
+ }
default: {
$release = debian_release($codename)
}
@@ -60,6 +64,7 @@ class apt(
'' => template( "apt/${::operatingsystem}/sources.list.erb"),
default => $custom_sources_list
},
+ mode => 0644, owner => root, group => 0,
require => Package['lsb'],
notify => Exec['refresh_apt'],
owner => root, group => 0, mode => 0644;
@@ -106,10 +111,6 @@ class apt(
# backports uses the normal archive key now
package { "debian-backports-keyring": ensure => absent }
- include common::moduledir
- $apt_base_dir = "${common::moduledir::module_dir_path}/apt"
- modules_dir { apt: }
-
if $custom_key_dir {
file { "${apt_base_dir}/keys.d":
source => "$custom_key_dir",
@@ -123,7 +124,7 @@ class apt(
}
if $custom_preferences != false {
Exec["custom_keys"] {
- before => Concat[apt_config],
+ before => File['apt_config'],
}
}
}
diff --git a/manifests/preferences.pp b/manifests/preferences.pp
index e9a74ff..66f36a7 100644
--- a/manifests/preferences.pp
+++ b/manifests/preferences.pp
@@ -1,20 +1,18 @@
class apt::preferences {
- concat::fragment{"apt_preferences_header":
- content => $apt::custom_preferences ? {
- '' => $::operatingsystem ? {
- 'debian' => template("apt/${::operatingsystem}/preferences_${apt::codename}.erb"),
- 'ubuntu' => template("apt/${::operatingsystem}/preferences_${apt::codename}.erb"),
- },
- default => $custom_preferences
+ $pref_contents = $custom_preferences ? {
+ '' => $operatingsystem ? {
+ 'debian' => template("apt/${::operatingsystem}/preferences_${apt::codename}.erb"),
+ 'ubuntu' => template("apt/${::operatingsystem}/preferences_${apt::codename}.erb"),
},
- order => 00,
- target => '/etc/apt/preferences',
+ default => $custom_preferences
}
- concat{'/etc/apt/preferences':
- alias => apt_config,
+ file { '/etc/apt/preferences':
+ ensure => present,
+ alias => 'apt_config',
# only update together
+ content => $pref_contents,
require => File["/etc/apt/sources.list"],
owner => root, group => 0, mode => 0644;
}
diff --git a/manifests/preferences/absent.pp b/manifests/preferences/absent.pp
index 0e96119..68ab400 100644
--- a/manifests/preferences/absent.pp
+++ b/manifests/preferences/absent.pp
@@ -1,6 +1,7 @@
class apt::preferences::absent {
file { '/etc/apt/preferences':
+ alias => 'apt_config',
ensure => absent,
}
}
diff --git a/manifests/preferences_snippet.pp b/manifests/preferences_snippet.pp
index 6a8e6bc..1aafe57 100644
--- a/manifests/preferences_snippet.pp
+++ b/manifests/preferences_snippet.pp
@@ -23,11 +23,9 @@ define apt::preferences_snippet(
fail("apt::preferences_snippet requires either a 'pin' or 'release' argument, not both")
}
- include apt::preferences
-
- concat::fragment{"apt_preference_${name}":
+ file { "/etc/apt/preferences.d/${name}":
ensure => $ensure,
- target => '/etc/apt/preferences',
+ owner => root, group => 0, mode => 0644;
}
# This should really work in the same manner as sources_list and apt_conf
@@ -37,19 +35,19 @@ define apt::preferences_snippet(
'': {
case $release {
'': {
- Concat::Fragment["apt_preference_${name}"]{
+ File["/etc/apt/preferences.d/${name}"]{
content => template("apt/preferences_snippet.erb")
}
}
default: {
- Concat::Fragment["apt_preference_${name}"]{
+ File["/etc/apt/preferences.d/${name}"]{
content => template("apt/preferences_snippet_release.erb")
}
}
}
}
default: {
- Concat::Fragment["apt_preference_${name}"]{
+ File["/etc/apt/preferences.d/${name}"]{
source => $source
}
}
diff --git a/manifests/upgrade_package.pp b/manifests/upgrade_package.pp
index 9202624..2ce6932 100644
--- a/manifests/upgrade_package.pp
+++ b/manifests/upgrade_package.pp
@@ -1,6 +1,8 @@
define apt::upgrade_package ($version = "") {
- include apt::update
+ if $apt::disable_update == false {
+ include apt::update
+ }
$version_suffix = $version ? {
'' => '',
@@ -24,10 +26,11 @@ define apt::upgrade_package ($version = "") {
exec { "apt-get -q -y -o 'DPkg::Options::=--force-confold' install ${name}${version_suffix}":
onlyif => [ "grep-status -F Status installed -a -P $name -q", "apt-show-versions -u $name | grep -q upgradeable" ],
- require => [
- Exec['apt_updated'],
- Package['apt-show-versions', 'dctrl-tools'],
- ],
+ require => $apt::disable_update ? {
+ true => Package['apt-show-versions', 'dctrl-tools'],
+ default => [ Exec['apt_updated'],
+ Package['apt-show-versions', 'dctrl-tools'] ],
+ }
}
}