module-apt/manifests/init.pp
Micah Anderson 2ee70ab5e0 Set dselect DSelect::Clean to 'pre-auto' by default for hosts that are vservers.
Before you only had the choice of setting a 03clean apt configuration for either
all hosts, or every single host. Setting it to have the recommended settings for
vservers for all hosts meant that you were setting it for non-vservers as well
as vservers. The other option you had was to set it per host. This was a bit
annoying if you have any more than one vserver because you would need to create
a 03clean for every single vserver guest.

This change auto-detects if the node is a vserver, and if it is it automatically
installs the 03clean_vserver file, with the recommended DSelect::Clean settings,
and allows you to override this for all of your vservers, or for specific hosts.
2010-12-07 12:20:14 -05:00

189 lines
5.4 KiB
Puppet

# apt.pp - common components and defaults for handling apt
# Copyright (C) 2008 Micah Anerson <micah@riseup.net>
# Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
# See LICENSE for the full license granted to you.
class apt {
$use_volatile = $apt_volatile_enabled ? {
'' => false,
default => $apt_volatile_enabled,
}
$include_src = $apt_include_src ? {
'' => false,
default => $apt_include_src,
}
$use_next_release = $apt_use_next_release ? {
'' => false,
default => $apt_use_next_release,
}
$debian_url = $apt_debian_url ? {
'' => 'http://ftp.debian.org/debian/',
default => "${apt_debian_url}",
}
$security_url = $apt_security_url ? {
'' => 'http://security.debian.org/',
default => "${apt_security_url}",
}
$backports_url = $apt_backports_url ? {
'' => 'http://backports.debian.org/debian-backports/',
default => "${apt_backports_url}",
}
$volatile_url = $apt_volatile_url ? {
'' => 'http://volatile.debian.org/debian-volatile/',
default => "${apt_volatile_url}",
}
$ubuntu_url = $apt_ubuntu_url ? {
'' => 'http://archive.ubuntu.com/ubuntu',
default => "${apt_ubuntu_url}",
}
case $operatingsystem {
'debian': {
$repos = $apt_repos ? {
'' => 'main contrib non-free',
default => "${apt_repos}",
}
}
'ubuntu': {
$repos = $apt_repos ? {
'' => 'main restricted universe multiverse',
default => "${apt_repos}",
}
}
}
package { apt:
ensure => installed,
require => undef,
}
include lsb
# init $release, $next_release, $codename, $next_codename
case $lsbdistcodename {
'': {
$codename = $lsbdistcodename
$release = $lsbdistrelease
}
default: {
$codename = $lsbdistcodename
$release = debian_release($codename)
}
}
$next_codename = debian_nextcodename($codename)
$next_release = debian_nextrelease($release)
config_file {
# include main, security and backports
# additional sources should be included via the apt::sources_list define
"/etc/apt/sources.list":
content => $custom_sources_list ? {
'' => template( "apt/$operatingsystem/sources.list.erb"),
default => $custom_sources_list
},
require => Package['lsb'];
}
apt_conf { "02show_upgraded":
source => ["puppet:///modules/site-apt/${fqdn}/02show_upgraded",
"puppet:///modules/site-apt/02show_upgraded",
"puppet:///modules/apt/02show_upgraded"]
}
if ( $virtual == "vserver" ) {
apt_conf { "03clean_vserver":
source => ["puppet:///modules/site-apt/${fqdn}/03clean_vserver",
"puppet:///modules/site-apt/03clean_vserver",
"puppet:///modules/apt/03clean_vserver"]
}
}
else {
apt_conf { "03clean":
source => ["puppet:///modules/site-apt/${fqdn}/03clean",
"puppet:///modules/site-apt/03clean",
"puppet:///modules/apt/03clean"]
}
}
case $custom_preferences {
false: {
include apt::preferences::absent
}
default: {
# When squeeze becomes the stable branch, transform this file's header
# into a preferences.d file
include apt::preferences
}
}
# backward compatibility: upgrade from previous versions of this module.
file {
["/etc/apt/apt.conf.d/from_puppet",
"/etc/apt/apt.conf.d/99from_puppet"
]:
ensure => 'absent',
require => [ Apt_conf['02show_upgraded'],
Apt_conf['03clean'],
],
}
# watch .d directories and ensure they are present
file { "/etc/apt/apt.conf.d": ensure => directory, checksum => mtime; }
file { "/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,
subscribe => [ File['/etc/apt/apt.conf.d'],
Config_file['/etc/apt/sources.list'] ];
'update_apt':
command => '/usr/bin/apt-get update && /usr/bin/apt-get autoclean',
refreshonly => true,
require => [ File['/etc/apt/apt.conf.d',
'/etc/apt/preferences'],
Config_file['/etc/apt/sources.list'] ],
loglevel => info,
# Another Semaphor for all packages to reference
alias => "apt_updated";
}
## This package should really always be current
package { "debian-archive-keyring": ensure => latest }
# 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",
recurse => true,
mode => 0755, owner => root, group => root,
}
exec { "find ${apt_base_dir}/keys.d -type f -exec apt-key add '{}' \\; && apt-get update":
alias => "custom_keys",
subscribe => File["${apt_base_dir}/keys.d"],
refreshonly => true,
}
if $custom_preferences != false {
Exec["custom_keys"] {
before => Concatenated_file[apt_config],
}
}
}
# workaround for preseeded_package component
file { [ "/var/cache", "/var/cache/local", "/var/cache/local/preseeding" ]: ensure => directory }
}