3 $always_apt_update = false,
4 $apt_update_frequency = 'reluctantly',
5 $purge_sources_list = false,
6 $purge_sources_list_d = false,
7 $purge_preferences = false,
8 $purge_preferences_d = false,
9 $update_timeout = undef,
10 $update_tries = undef,
12 ) inherits ::apt::params {
14 if $::osfamily != 'Debian' {
15 fail('This module only works on Debian or derivatives like Ubuntu')
20 $frequency_options = ['always','daily','weekly','reluctantly']
21 validate_re($apt_update_frequency, $frequency_options)
23 validate_bool($purge_sources_list, $purge_sources_list_d,
24 $purge_preferences, $purge_preferences_d)
26 $sources_list_content = $purge_sources_list ? {
28 true => "# Repos managed by puppet.\n",
31 if $always_apt_update == true {
32 Exec <| title=='apt_update' |> {
37 file { '/etc/apt/apt.conf.d/15update-stamp':
39 content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
45 $root = $apt::params::root
46 $apt_conf_d = $apt::params::apt_conf_d
47 $sources_list_d = $apt::params::sources_list_d
48 $preferences_d = $apt::params::preferences_d
49 $provider = $apt::params::provider
51 file { 'sources.list':
53 path => "${root}/sources.list",
57 content => $sources_list_content,
58 notify => Exec['apt_update'],
61 file { 'sources.list.d':
63 path => $sources_list_d,
66 purge => $purge_sources_list_d,
67 recurse => $purge_sources_list_d,
68 notify => Exec['apt_update'],
71 if $purge_preferences {
72 file { 'apt-preferences':
74 path => "${root}/preferences",
78 file { 'preferences.d':
80 path => $preferences_d,
83 purge => $purge_preferences_d,
84 recurse => $purge_preferences_d,
87 # Need anchor to provide containment for dependencies.
88 anchor { 'apt::update':
89 require => Class['apt::update'],
92 # manage sources if present
93 if $sources != undef {
94 validate_hash($sources)
95 create_resources('apt::source', $sources)