module-apt/manifests/init.pp
Gabriel Filion 0752201ce4 push logic behind apt::repos back in apt::params
The logic in specifying the default value for apt::repos is in the wrong
place: it should be in apt::params since this is exactly what this
latter class is for.

There's no special case that can involve making default the value follow
the value of another parameter so there's no point in having that logic
in the main class.
2016-06-27 15:41:19 +02:00

141 lines
4.3 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_lts = $apt::params::use_lts,
$use_volatile = $apt::params::use_volatile,
$use_backports = $apt::params::use_backports,
$include_src = $apt::params::include_src,
$use_next_release = $apt::params::use_next_release,
$debian_url = $apt::params::debian_url,
$security_url = $apt::params::security_url,
$backports_url = $apt::params::backports_url,
$lts_url = $apt::params::lts_url,
$volatile_url = $apt::params::volatile_url,
$ubuntu_url = $apt::params::ubuntu_url,
$repos = $apt::params::repos,
$custom_preferences = $apt::params::custom_preferences,
$custom_sources_list = '',
$custom_key_dir = $apt::params::custom_key_dir
) inherits apt::params {
$real_backports_url = $backports_url ? {
false => $debian_url,
default => $backports_url,
}
package { 'apt':
ensure => installed,
require => undef,
}
$sources_content = $custom_sources_list ? {
'' => template( "apt/${::operatingsystem}/sources.list.erb"),
default => $custom_sources_list
}
file {
# include main and security
# additional sources should be included via the apt::sources_list define
'/etc/apt/sources.list':
content => $sources_content,
notify => Exec['apt_updated'],
owner => root,
group => 0,
mode => '0644';
}
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' ],
alias => '03clean';
}
}
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
}
}
include apt::dot_d_directories
## 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 }
if ($use_backports and !($::debian_release in ['testing', 'unstable', 'experimental'])) {
apt::sources_list {
'backports':
content => "deb ${real_backports_url} ${::debian_codename}-backports ${apt::repos}",
}
if $include_src {
apt::sources_list {
'backports-src':
content => "deb-src ${real_backports_url} ${::debian_codename}-backports ${apt::repos}",
}
}
}
include common::moduledir
common::module_dir { 'apt': }
$apt_base_dir = "${common::moduledir::module_dir_path}/apt"
if $custom_key_dir {
file { "${apt_base_dir}/keys.d":
source => $custom_key_dir,
recurse => true,
owner => root,
group => root,
mode => '0755',
}
exec { 'custom_keys':
command => "find ${apt_base_dir}/keys.d -type f -exec apt-key add '{}' \\;",
subscribe => File["${apt_base_dir}/keys.d"],
refreshonly => true,
notify => Exec[refresh_apt]
}
if $custom_preferences != false {
Exec['custom_keys'] {
before => File['apt_config']
}
}
}
# 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',
require => [
File['/etc/apt/apt.conf.d', '/etc/apt/preferences' ],
File['/etc/apt/sources.list'] ],
refreshonly => true,
# Another Semaphor for all packages to reference
alias => [ 'apt_updated', 'refresh_apt']
}
}