summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--files/preferences (renamed from templates/preferences.erb)1
-rw-r--r--files/preferences_snippet.erb4
-rw-r--r--manifests/apt_conf_snippet.pp16
-rw-r--r--manifests/init.pp29
-rw-r--r--manifests/preferences.pp15
-rw-r--r--manifests/preferences_snippet.pp22
6 files changed, 44 insertions, 43 deletions
diff --git a/templates/preferences.erb b/files/preferences
index ac71582..e893b7e 100644
--- a/templates/preferences.erb
+++ b/files/preferences
@@ -5,3 +5,4 @@ Pin-Priority: 1
Package: *
Pin: release a=testing
Pin-Priority: 2
+
diff --git a/files/preferences_snippet.erb b/files/preferences_snippet.erb
new file mode 100644
index 0000000..4dfb701
--- /dev/null
+++ b/files/preferences_snippet.erb
@@ -0,0 +1,4 @@
+Package: <%= name %>
+Pin: release a=<%= release %>
+Pin-Priority: <%= priority %>
+
diff --git a/manifests/apt_conf_snippet.pp b/manifests/apt_conf_snippet.pp
index 77b88ae..c1cd884 100644
--- a/manifests/apt_conf_snippet.pp
+++ b/manifests/apt_conf_snippet.pp
@@ -10,20 +10,20 @@ define apt::apt_conf_snippet(
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;
}
}
}
diff --git a/manifests/init.pp b/manifests/init.pp
index 0e4bd5c..7d68303 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -19,23 +19,16 @@ class apt {
}
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
@@ -109,4 +102,4 @@ class apt {
# workaround for preseeded_package component
file { [ "/var/cache", "/var/cache/local", "/var/cache/local/preseeding" ]: ensure => directory }
-}
+}
diff --git a/manifests/preferences.pp b/manifests/preferences.pp
index 772b426..5be3bd0 100644
--- a/manifests/preferences.pp
+++ b/manifests/preferences.pp
@@ -4,18 +4,9 @@ class apt::preferences {
$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':
diff --git a/manifests/preferences_snippet.pp b/manifests/preferences_snippet.pp
index 21dfe86..a723206 100644
--- a/manifests/preferences_snippet.pp
+++ b/manifests/preferences_snippet.pp
@@ -1,17 +1,29 @@
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
+ }
+ }
}