Refactor: manage .d directories when using sources_list and apt_conf

The .d directories are only managed by the main 'apt' class. However,
both 'sources_list' and 'apt_conf' defines depend on those directories.
So in practice, the defines have an implicit need for those directories
to be somehow managed.

Let's turn this into an explicit relation, and include the directories
in the defines.

This makes it possible to use both defines without having to include the
main 'apt' class. (maybe when using puppet apply?)

Signed-off-by: Gabriel Filion <lelutin@gmail.com>
This commit is contained in:
Gabriel Filion 2012-04-09 01:33:13 -04:00
parent 66433e665e
commit 4d0ddd0057
4 changed files with 27 additions and 15 deletions

View file

@ -12,6 +12,8 @@ define apt::apt_conf(
fail("Only one of \$source or \$content must specified for apt_conf ${name}")
}
include apt::dot_d_directories
file { "/etc/apt/apt.conf.d/${name}":
ensure => $ensure,
notify => Exec["refresh_apt"],

View file

@ -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,
}
}

View file

@ -128,21 +128,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 }

View file

@ -11,6 +11,8 @@ define apt::sources_list (
fail("Only one of \$source or \$content must specified for apt_sources_snippet ${name}")
}
include apt::dot_d_directories
file { "/etc/apt/sources.list.d/${name}":
ensure => $ensure,
owner => root, group => 0, mode => 0644;