diff options
| -rw-r--r-- | files/preferences (renamed from templates/preferences.erb) | 1 | ||||
| -rw-r--r-- | files/preferences_snippet.erb | 4 | ||||
| -rw-r--r-- | manifests/apt_conf_snippet.pp | 16 | ||||
| -rw-r--r-- | manifests/init.pp | 29 | ||||
| -rw-r--r-- | manifests/preferences.pp | 15 | ||||
| -rw-r--r-- | manifests/preferences_snippet.pp | 22 | 
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 +      } +  }  } | 
