diff options
Diffstat (limited to 'manifests')
-rw-r--r-- | manifests/apt_conf.pp | 7 | ||||
-rw-r--r-- | manifests/dot_d_directories.pp | 22 | ||||
-rw-r--r-- | manifests/init.pp | 19 | ||||
-rw-r--r-- | manifests/sources_list.pp | 8 |
4 files changed, 38 insertions, 18 deletions
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 { |