11 ) inherits ::apt::params {
13 $frequency_options = ['always','daily','weekly','reluctantly']
14 validate_hash($update)
15 if $update['frequency'] {
16 validate_re($update['frequency'], $frequency_options)
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_re($proxy['ensure'], ['file', 'present', 'absent'])
53 validate_string($proxy['host'])
56 unless is_integer($proxy['port']) {
57 fail('$proxy port must be an integer')
61 validate_bool($proxy['https'])
64 $_proxy = merge($apt::proxy_defaults, $proxy)
66 validate_hash($sources)
68 validate_hash($settings)
72 if $_proxy['ensure'] == 'absent' or $_proxy['host'] {
73 apt::setting { 'conf-proxy':
74 ensure => $_proxy['ensure'],
76 content => template('apt/_conf_header.erb', 'apt/proxy.erb'),
80 $sources_list_content = $_purge['sources.list'] ? {
81 true => "# Repos managed by puppet.\n",
85 $preferences_ensure = $_purge['preferences'] ? {
90 if $_update['frequency'] == 'always' {
91 Exec <| title=='apt_update' |> {
96 apt::setting { 'conf-update-stamp':
98 content => template('apt/_conf_header.erb', 'apt/15update-stamp.erb'),
101 file { 'sources.list':
103 path => $::apt::sources_list,
107 content => $sources_list_content,
108 notify => Class['apt::update'],
111 file { 'sources.list.d':
113 path => $::apt::sources_list_d,
117 purge => $_purge['sources.list.d'],
118 recurse => $_purge['sources.list.d'],
119 notify => Class['apt::update'],
122 file { 'preferences':
123 ensure => $preferences_ensure,
124 path => $::apt::preferences,
128 notify => Class['apt::update'],
131 file { 'preferences.d':
133 path => $::apt::preferences_d,
137 purge => $_purge['preferences.d'],
138 recurse => $_purge['preferences.d'],
139 notify => Class['apt::update'],
142 # manage sources if present
144 create_resources('apt::source', $sources)
146 # manage keys if present
148 create_resources('apt::key', $keys)
150 # manage ppas if present
152 create_resources('apt::ppa', $ppas)
154 # manage settings if present
156 create_resources('apt::setting', $settings)
159 # manage pins if present
161 create_resources('apt::pin', $pins)