diff --git a/manifests/backports.pp b/manifests/backports.pp new file mode 100644 index 0000000000..6734e05297 --- /dev/null +++ b/manifests/backports.pp @@ -0,0 +1,45 @@ +# This adds the necessary components to get backports for ubuntu and debian +# +# == Parameters +# +# [*release*] +# The ubuntu/debian release name. Defaults to $lsbdistcodename. Setting this +# manually can cause undefined behavior. (Read: universe exploding) +# +# == Examples +# +# include apt::backports +# +# class { 'apt::backports': +# release => 'natty', +# } +# +# == Authors +# +# Ben Hughes, I think. At least blame him if this goes wrong. I just added puppet doc. +# +# == Copyright +# +# Copyright 2011 Puppet Labs Inc, unless otherwise noted. +class apt::backports( + $release = $lsbdistcodename, + $location = $apt::params::backports_locations +) inherits apt::params { + + apt::source { 'backports.list': + location => $location, + release => "${release}-backports", + repos => $lsbdistid ? { + 'debian' => 'main contrib non-free', + 'ubuntu' => 'universe multiverse restricted', + }, + key => $lsbdistid ? { + 'debian' => '55BE302B', + 'ubuntu' => '437D05B5', + }, + key_server => 'pgp.mit.edu', + pin => '200', + notify => Exec["apt-get update"], + } +} + diff --git a/manifests/conf.pp b/manifests/conf.pp new file mode 100644 index 0000000000..6be1a67fac --- /dev/null +++ b/manifests/conf.pp @@ -0,0 +1,17 @@ +define apt::conf ( + $priority = '50', + $content + ) { + + include apt::params + + $root = "${apt::params::root}" + $apt_conf_d = "${apt::params::apt_conf_d}" + + file { "${apt_conf_d}/${priority}${name}": + content => $content, + owner => root, + group => root, + mode => 0644, + } +} diff --git a/manifests/debian/testing.pp b/manifests/debian/testing.pp index cfdeb3cf73..45133470fa 100644 --- a/manifests/debian/testing.pp +++ b/manifests/debian/testing.pp @@ -1,6 +1,7 @@ # testing.pp class apt::debian::testing { + include apt # deb http://debian.mirror.iweb.ca/debian/ testing main contrib non-free # deb-src http://debian.mirror.iweb.ca/debian/ testing main contrib non-free @@ -17,5 +18,4 @@ key_server => 'subkeys.pgp.net', pin => '-10', } - } diff --git a/manifests/debian/unstable.pp b/manifests/debian/unstable.pp index 3991023d17..401c9c5cda 100644 --- a/manifests/debian/unstable.pp +++ b/manifests/debian/unstable.pp @@ -1,6 +1,7 @@ # unstable.pp class apt::debian::unstable { + include apt # deb http://debian.mirror.iweb.ca/debian/ unstable main contrib non-free # deb-src http://debian.mirror.iweb.ca/debian/ unstable main contrib non-free @@ -17,5 +18,4 @@ key_server => 'subkeys.pgp.net', pin => '-10', } - } diff --git a/manifests/force.pp b/manifests/force.pp index 45c5679292..0089bbd753 100644 --- a/manifests/force.pp +++ b/manifests/force.pp @@ -18,5 +18,4 @@ exec { "/usr/bin/aptitude -y -t ${release} install ${name}${version_string}": unless => $install_check, } - } diff --git a/manifests/init.pp b/manifests/init.pp index 29db697c14..5668d11005 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -45,9 +45,15 @@ false => undef, true => "# Repos managed by puppet.\n", } + + $root = $apt::params::root + $apt_conf_d = $apt::params::apt_conf_d + $sources_list_d = $apt::params::sources_list_d + $provider = $apt::params::provider + file { 'sources.list': ensure => present, - path => "${apt::params::root}/sources.list", + path => "${root}/sources.list", owner => root, group => root, mode => '0644', @@ -56,7 +62,7 @@ file { 'sources.list.d': ensure => directory, - path => "${apt::params::root}/sources.list.d", + path => $sources_list_d owner => root, group => root, purge => $purge_sources_list_d, @@ -64,7 +70,7 @@ } exec { 'apt_update': - command => "${apt::params::provider} update", + command => "${provider} update", subscribe => [ File['sources.list'], File['sources.list.d'] ], refreshonly => $refresh_only_apt_update, } @@ -74,13 +80,13 @@ file { '99unauth': ensure => present, content => "APT::Get::AllowUnauthenticated 1;\n", - path => '/etc/apt/apt.conf.d/99unauth', + path => "${apt_conf_d}/99unauth", } } false: { file { '99unauth': ensure => absent, - path => '/etc/apt/apt.conf.d/99unauth', + path => "${apt_conf_d}/99unauth", } } undef: { } # do nothing @@ -89,7 +95,7 @@ if($proxy_host) { file { 'configure-apt-proxy': - path => '/etc/apt/apt.conf.d/proxy', + path => "${apt_conf_d}/proxy", content => "Acquire::http::Proxy \"http://${proxy_host}:${proxy_port}\";", } } diff --git a/manifests/params.pp b/manifests/params.pp index ca5d65521d..79989c08a4 100644 --- a/manifests/params.pp +++ b/manifests/params.pp @@ -2,4 +2,22 @@ $root = '/etc/apt' $provider = '/usr/bin/apt-get' $sources_list_d = "${root}/sources.list.d" + $apt_conf_d = "${root}/apt.conf.d" + $preferences_d = "${root}/preferences.d" + + case $lsbdistid { + 'debian': { + $backports_location = 'http://backports.debian.org/debian-backports' + } + 'ubuntu': { + case $lsbdistcodename { + 'hardy','lucid','maverick','natty','oneiric','precise': { + $backports_location = http://us.archive.ubuntu.com/ubuntuk + } + default: { + $backports_location = 'http://old-releases.ubuntu.com/ubuntu', + } + } + } + } } diff --git a/manifests/pin.pp b/manifests/pin.pp index 46613667eb..2899fce77a 100644 --- a/manifests/pin.pp +++ b/manifests/pin.pp @@ -8,9 +8,11 @@ include apt::params + $preferences_d = $apt::params::preferences_d + file { "${name}.pref": ensure => file, - path => "${apt::params::root}/preferences.d/${name}", + path => "${preferences_d}/${name}", owner => root, group => root, mode => '0644', diff --git a/manifests/ppa.pp b/manifests/ppa.pp index 095d8f17b2..2e4daa5d34 100644 --- a/manifests/ppa.pp +++ b/manifests/ppa.pp @@ -8,6 +8,8 @@ include apt::params + $sources_list_d = $apt::params::sources_list_d + if ! $release { fail('lsbdistcodename fact not available: release parameter required') } @@ -24,13 +26,12 @@ exec { "add-apt-repository-${name}": command => "/usr/bin/add-apt-repository ${name}", notify => Exec["apt-update-${name}"], - creates => "${apt::params::sources_list_d}/${sources_list_d_filename}", + creates => "${sources_list_d}/${sources_list_d_filename}", } - file { "${apt::params::sources_list_d}/${sources_list_d_filename}": + file { "${sources_list_d}/${sources_list_d_filename}": ensure => file, require => Exec["add-apt-repository-${name}"]; } - } diff --git a/manifests/release.pp b/manifests/release.pp index ee94e139fa..6e0a38f73f 100644 --- a/manifests/release.pp +++ b/manifests/release.pp @@ -6,7 +6,9 @@ include apt::params - file { "${apt::params::root}/apt.conf.d/01release": + $root = $apt::params::root + + file { "${root}/apt.conf.d/01release": owner => root, group => root, mode => '0644', diff --git a/manifests/source.pp b/manifests/source.pp index 95768dcfaa..3d4011e26d 100644 --- a/manifests/source.pp +++ b/manifests/source.pp @@ -16,13 +16,16 @@ include apt::params + $sources_list_d = $apt::params::sources_list_d + $provider = $apt::params::provider + if $release == undef { fail('lsbdistcodename fact not available: release parameter required') } file { "${name}.list": ensure => file, - path => "${apt::params::root}/sources.list.d/${name}.list", + path => "${apt::params::sources_list_d}/${name}.list", owner => root, group => root, mode => '0644', @@ -34,14 +37,14 @@ } exec { "${name} apt update": - command => "${apt::params::provider} update", + command => "${provider} update", subscribe => File["${name}.list"], refreshonly => true, } if $required_packages != false { exec { "Required packages: '${required_packages}' for ${name}": - command => "${apt::params::provider} -y install ${required_packages}", + command => "${provider} -y install ${required_packages}", subscribe => File["${name}.list"], refreshonly => true, }