7 ) inherits ::apt::params {
10 $frequency_options = ['always','daily','weekly','reluctantly']
11 validate_hash($update)
12 if $update['frequency'] {
13 validate_re($update['frequency'], $frequency_options)
15 if $update['always'] {
16 validate_bool($update['always'])
18 if $update['timeout'] {
19 unless is_integer($update['timeout']) {
20 fail('timeout value for update must be an integer')
24 unless is_integer($update['tries']) {
25 fail('tries value for update must be an integer')
29 $_update = merge($::apt::update_defaults, $update)
33 if $purge['sources.list'] {
34 validate_bool($purge['sources.list'])
36 if $purge['sources.list.d'] {
37 validate_bool($purge['sources.list.d'])
39 if $purge['preferences'] {
40 validate_bool($purge['preferences'])
42 if $purge['preferences.d'] {
43 validate_bool($purge['preferences.d'])
46 $_purge = merge($::apt::purge_defaults, $purge)
50 validate_string($proxy['host'])
53 unless is_integer($proxy['port']) {
54 fail('$proxy port must be an integer')
58 validate_bool($proxy['https'])
61 $_proxy = merge($apt::proxy_defaults, $proxy)
64 apt::setting { 'conf-proxy':
66 content => template('apt/_header.erb', 'apt/proxy.erb'),
70 $sources_list_content = $_purge['sources.list'] ? {
72 true => "# Repos managed by puppet.\n",
75 $preferences_ensure = $_purge['preferences'] ? {
80 if $_update['always'] {
81 Exec <| title=='apt_update' |> {
86 apt::setting { 'conf-update-stamp':
88 content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
91 file { 'sources.list':
93 path => $::apt::sources_list,
97 content => $sources_list_content,
98 notify => Exec['apt_update'],
101 file { 'sources.list.d':
103 path => $::apt::sources_list_d,
107 purge => $_purge['sources.list.d'],
108 recurse => $_purge['sources.list.d'],
109 notify => Exec['apt_update'],
112 file { 'preferences':
113 ensure => $preferences_ensure,
114 path => $::apt::preferences,
118 notify => Exec['apt_update'],
121 file { 'preferences.d':
123 path => $::apt::preferences_d,
127 purge => $_purge['preferences.d'],
128 recurse => $_purge['preferences.d'],
129 notify => Exec['apt_update'],
132 # Need anchor to provide containment for dependencies.
133 anchor { 'apt::update':
134 require => Class['apt::update'],
137 # manage sources if present
138 if $sources != undef {
139 validate_hash($sources)
140 create_resources('apt::source', $sources)