# apt.pp - common components and defaults for handling apt # Copyright (C) 2008 Micah Anerson # Copyright (C) 2007 David Schmitt # See LICENSE for the full license granted to you. class apt( $use_volatile = hiera('apt_volatile_enabled',false), $include_src = hiera('apt_include_src',false), $use_next_release = hiera('apt_use_next_release'), $debian_url = hiera('apt_debian_url','http://cdn.debian.net/debian/'), $security_url = hiera('apt_security_url','http://security.debian.org/'), $backports_url = hiera('apt_backports_url','http://backports.debian.org/debian-backports/'), $volatile_url = hiera('apt_volatile_url', 'http://volatile.debian.org/debian-volatile/'), $ubuntu_url = hiera('apt_ubuntu_url', 'http://archive.ubuntu.com/ubuntu'), $repos = hiera('apt_repos','auto'), $custom_preferences = hiera('apt_custom_preferences','') ) { case $::operatingsystem { 'debian': { $real_repos = $repos ? { 'auto' => 'main contrib non-free', default => $repos, } } 'ubuntu': { $real_repos = $repos ? { '' => 'main restricted universe multiverse', default => $repos, } } } package { apt: ensure => installed, require => undef, } include lsb # init $release, $next_release, $codename, $next_codename, $release_version case $::lsbdistcodename { '': { $codename = $::lsbdistcodename $release = $::lsbdistrelease } default: { $codename = $::lsbdistcodename $release = debian_release($codename) } } $release_version = debian_release_version($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'], notify => Exec['refresh_apt'], } 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 } 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 { "custom_keys": command => "find ${apt_base_dir}/keys.d -type f -exec apt-key add '{}' \\; && /usr/bin/apt-get update", subscribe => File["${apt_base_dir}/keys.d"], refreshonly => true, } if $custom_preferences != false { Exec["custom_keys"] { before => Concat[apt_config], } } } # workaround for preseeded_package component file { [ "/var/cache", "/var/cache/local", "/var/cache/local/preseeding" ]: ensure => directory } }