Package: *
Pin: release a=testing
Pin-Priority: 2
+
--- /dev/null
+Package: <%= name %>
+Pin: release a=<%= release %>
+Pin-Priority: <%= priority %>
+
fail("Only one of \$source or \$content must specified for apt_conf_snippet ${name}")
}
+ file { "/etc/apt/apt.conf.d/${name}":
+ ensure => $ensure,
+ notify => Exec["refresh_apt"],
+ owner => root, group => 0, mode => 0600;
+ }
+
if $source {
- file { "/etc/apt/apt.conf.d/${name}":
- ensure => $ensure,
+ File["/etc/apt/apt.conf.d/${name}"] {
source => $source,
- notify => Exec["refresh_apt"],
- owner => root, group => 0, mode => 0600;
}
}
else {
- file { "/etc/apt/apt.conf.d/${name}":
- ensure => $ensure,
+ File["/etc/apt/apt.conf.d/${name}"] {
content => $content,
- notify => Exec["refresh_apt"],
- owner => root, group => 0, mode => 0600;
}
}
}
}
include lsb
- case $custom_sources_list {
- '': {
- config_file {
- # include main, security and backports
- # additional sources should be included via the custom_sources_template
- # define
- "/etc/apt/sources.list":
- content => template( "apt/$operatingsystem/sources.list.erb"),
- require => Package['lsb'];
- }
- }
- default: {
- config_file { "/etc/apt/sources.list":
- content => $custom_sources_list,
- require => Package['lsb'];
- }
- }
+ config_file {
+ # include main, security and backports
+ # additional sources should be included via the custom_sources_template
+ # define
+ "/etc/apt/sources.list":
+ content => $custom_sources_list ? {
+ '' => template( "apt/$operatingsystem/sources.list.erb"),
+ default => $custom_sources_list
+ },
+ require => Package['lsb'];
}
# 01autoremove already present by default
# workaround for preseeded_package component
file { [ "/var/cache", "/var/cache/local", "/var/cache/local/preseeding" ]: ensure => directory }
-}
+}
$apt_preferences_dir = "${common::moduledir::module_dir_path}/apt/preferences"
module_dir{'apt/preferences': }
file{"${apt_preferences_dir}_header":
- content => $custom_preferences ? {
- '' => 'Package: *
-Pin: release a=unstable
-Pin-Priority: 1
-
-Package: *
-Pin: release a=testing
-Pin-Priority: 2
-
-',
- default => $custom_preferences
- },
+ source => ["puppet:///modules/site-apt/${fqdn}/preferences",
+ "puppet:///modules/site-apt/preferences",
+ "puppet:///modules/apt/preferences"]
}
concatenated_file{'/etc/apt/preferences':
define apt::preferences_snippet(
$ensure = 'present',
+ $source = '',
$release,
$priority
){
include apt::preferences
+
file { "${apt::preferences::apt_preferences_dir}/${name}":
ensure => $ensure,
- content => "Package: ${name}
-Pin: release a=${release}
-Pin-Priority: ${priority}
-
-",
+ #TODO this template is somewhat limited
notify => Exec["concat_${apt::preferences::apt_preferences_dir}"],
owner => root, group => 0, mode => 0600;
}
+
+ # This should really work in the same manner as sources_list and apt_conf
+ # snippets, but since the preferences.d directory cannot be used in Debian
+ # lenny, we can't generalize without going into ugly special-casing.
+ case $source {
+ '' =>
+ File["${apt::preferences::apt_preferences_dir/${name}"] {
+ content => template("apt/preferences_snippet.erb")
+ },
+ default =>
+ File["${apt::preferences::apt_preferences_dir/${name}"] {
+ source => $source
+ }
+ }
}