diff --git a/README b/README index 1b01f88..fdae462 100644 --- a/README +++ b/README @@ -19,7 +19,7 @@ This module needs: - lsb-release installed - the common module: git://labs.riseup.net/shared-common -- the concat module: https://github.com/ripienaar/puppet-concat +- 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 @@ -371,7 +371,7 @@ Resources ========= Concat[apt_config] ------------------------------ +------------------ Use this resource to depend on or add to a completed apt configuration diff --git a/files/squeeze/50unattended-upgrades b/files/squeeze/50unattended-upgrades index fbab858..46fc0dc 100644 --- a/files/squeeze/50unattended-upgrades +++ b/files/squeeze/50unattended-upgrades @@ -12,6 +12,7 @@ Unattended-Upgrade::Allowed-Origins { APT::Periodic::Update-Package-Lists "1"; APT::Periodic::Unattended-Upgrade "1"; Unattended-Upgrade::Mail "root"; +Unattended-Upgrade::MailOnlyOnError "true"; APT::UnattendedUpgrades::LogDir "/var/log/"; APT::UnattendedUpgrades::LogFile "unattended_upgrades.log"; diff --git a/manifests/apt_conf.pp b/manifests/apt_conf.pp index c484ec3..fe07546 100644 --- a/manifests/apt_conf.pp +++ b/manifests/apt_conf.pp @@ -12,10 +12,15 @@ define apt::apt_conf( fail("Only one of \$source or \$content must specified for apt_conf ${name}") } + include apt::dot_d_directories + + # One would expect the 'file' resource on sources.list.d to trigger an + # apt-get update when files are added or modified in the directory, but it + # apparently doesn't. file { "/etc/apt/apt.conf.d/${name}": ensure => $ensure, + owner => root, group => 0, mode => 0644, notify => Exec["refresh_apt"], - owner => root, group => 0, mode => 0644; } if $source { diff --git a/manifests/dot_d_directories.pp b/manifests/dot_d_directories.pp new file mode 100644 index 0000000..742aad4 --- /dev/null +++ b/manifests/dot_d_directories.pp @@ -0,0 +1,22 @@ +class apt::dot_d_directories { + + # watch .d directories and ensure they are present + file { + "/etc/apt/apt.conf.d": + ensure => directory, + checksum => mtime, + notify => Exec['refresh_apt']; + "/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, + } + +} diff --git a/manifests/init.pp b/manifests/init.pp index 3a816d2..960f18d 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -85,7 +85,8 @@ class apt { '' => template( "apt/$operatingsystem/sources.list.erb"), default => $custom_sources_list }, - require => Package['lsb']; + require => Package['lsb'], + notify => Exec['refresh_apt'], } apt_conf { "02show_upgraded": @@ -128,21 +129,7 @@ class apt { 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'] ]; - } + include apt::dot_d_directories ## This package should really always be current package { "debian-archive-keyring": ensure => latest } diff --git a/manifests/sources_list.pp b/manifests/sources_list.pp index 86b35a7..499116d 100644 --- a/manifests/sources_list.pp +++ b/manifests/sources_list.pp @@ -11,9 +11,15 @@ define apt::sources_list ( fail("Only one of \$source or \$content must specified for apt_sources_snippet ${name}") } + include apt::dot_d_directories + + # One would expect the 'file' resource on sources.list.d to trigger an + # apt-get update when files are added or modified in the directory, but it + # apparently doesn't. file { "/etc/apt/sources.list.d/${name}": ensure => $ensure, - owner => root, group => 0, mode => 0644; + owner => root, group => 0, mode => 0644, + notify => Exec['refresh_apt'], } if $source { diff --git a/templates/Debian/apticron_sid.erb b/templates/Debian/apticron_sid.erb new file mode 120000 index 0000000..a9a3a6f --- /dev/null +++ b/templates/Debian/apticron_sid.erb @@ -0,0 +1 @@ +apticron_wheezy.erb \ No newline at end of file diff --git a/templates/Debian/listchanges_sid.erb b/templates/Debian/listchanges_sid.erb new file mode 120000 index 0000000..74ab496 --- /dev/null +++ b/templates/Debian/listchanges_sid.erb @@ -0,0 +1 @@ +listchanges_lenny.erb \ No newline at end of file