summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Filion <lelutin@gmail.com>2010-10-25 00:14:33 -0400
committerGabriel Filion <lelutin@gmail.com>2010-10-25 00:14:33 -0400
commitd97a49b7b2c020c2c43df6524236f50a421789ee (patch)
tree80702221488e6cbfe527a6d3a153708441d1e5bc
parentac76a5d52df78aec919f08334ca5b140902a9298 (diff)
refactor: simplify and remove inline content
Simplifications: make apt_conf_snippet repeat less code, make code that generates sources.list more concise. Remove all inline content in favor of templates and static files. The ability to include sources for static files was needed for the main 'preferences' file, so it was added to the preferences_snippet define. Signed-off-by: Gabriel Filion <lelutin@gmail.com>
-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
+ }
+ }
}