4 $always_apt_update = false,
5 $apt_update_frequency = 'reluctantly',
6 $purge_sources_list = false,
7 $purge_sources_list_d = false,
8 $purge_preferences = false,
9 $purge_preferences_d = false,
10 $update_timeout = undef,
11 $update_tries = undef,
13 ) inherits ::apt::params {
17 $frequency_options = ['always','daily','weekly','reluctantly']
18 validate_re($apt_update_frequency, $frequency_options)
20 validate_bool($purge_sources_list, $purge_sources_list_d,
21 $purge_preferences, $purge_preferences_d)
25 validate_string($proxy['host'])
28 unless is_integer($proxy['port']) {
29 fail('$proxy port must be an integer')
33 validate_bool($proxy['https'])
36 $_proxy = merge($apt::proxy_defaults, $proxy)
39 apt::setting { 'conf-proxy':
41 content => template('apt/_header.erb', 'apt/proxy.erb'),
45 $sources_list_content = $purge_sources_list ? {
47 true => "# Repos managed by puppet.\n",
50 if $always_apt_update == true {
51 Exec <| title=='apt_update' |> {
56 apt::setting { 'conf-update-stamp':
58 content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
61 file { 'sources.list':
63 path => $::apt::sources_list,
67 content => $sources_list_content,
68 notify => Exec['apt_update'],
71 file { 'sources.list.d':
73 path => $::apt::sources_list_d,
76 purge => $purge_sources_list_d,
77 recurse => $purge_sources_list_d,
78 notify => Exec['apt_update'],
81 if $purge_preferences {
82 file { 'apt-preferences':
84 path => $::apt::preferences,
88 file { 'preferences.d':
90 path => $::apt::preferences_d,
93 purge => $purge_preferences_d,
94 recurse => $purge_preferences_d,
97 # Need anchor to provide containment for dependencies.
98 anchor { 'apt::update':
99 require => Class['apt::update'],
102 # manage sources if present
103 if $sources != undef {
104 validate_hash($sources)
105 create_resources('apt::source', $sources)