10 ) inherits ::apt::params {
12 $frequency_options = ['always','daily','weekly','reluctantly']
13 validate_hash($update)
14 if $update['frequency'] {
15 validate_re($update['frequency'], $frequency_options)
17 if $update['timeout'] {
18 unless is_integer($update['timeout']) {
19 fail('timeout value for update must be an integer')
23 unless is_integer($update['tries']) {
24 fail('tries value for update must be an integer')
28 $_update = merge($::apt::update_defaults, $update)
32 if $purge['sources.list'] {
33 validate_bool($purge['sources.list'])
35 if $purge['sources.list.d'] {
36 validate_bool($purge['sources.list.d'])
38 if $purge['preferences'] {
39 validate_bool($purge['preferences'])
41 if $purge['preferences.d'] {
42 validate_bool($purge['preferences.d'])
45 $_purge = merge($::apt::purge_defaults, $purge)
49 validate_re($proxy['ensure'], ['file', 'present', 'absent'])
52 validate_string($proxy['host'])
55 unless is_integer($proxy['port']) {
56 fail('$proxy port must be an integer')
60 validate_bool($proxy['https'])
63 $_proxy = merge($apt::proxy_defaults, $proxy)
65 validate_hash($sources)
67 validate_hash($settings)
70 if $_proxy['ensure'] == 'absent' or $_proxy['host'] {
71 apt::setting { 'conf-proxy':
72 ensure => $_proxy['ensure'],
74 content => template('apt/_conf_header.erb', 'apt/proxy.erb'),
78 $sources_list_content = $_purge['sources.list'] ? {
79 true => "# Repos managed by puppet.\n",
83 $preferences_ensure = $_purge['preferences'] ? {
88 if $_update['frequency'] == 'always' {
89 Exec <| title=='apt_update' |> {
94 apt::setting { 'conf-update-stamp':
96 content => template('apt/_conf_header.erb', 'apt/15update-stamp.erb'),
99 file { 'sources.list':
101 path => $::apt::sources_list,
105 content => $sources_list_content,
106 notify => Class['apt::update'],
109 file { 'sources.list.d':
111 path => $::apt::sources_list_d,
115 purge => $_purge['sources.list.d'],
116 recurse => $_purge['sources.list.d'],
117 notify => Class['apt::update'],
120 file { 'preferences':
121 ensure => $preferences_ensure,
122 path => $::apt::preferences,
126 notify => Class['apt::update'],
129 file { 'preferences.d':
131 path => $::apt::preferences_d,
135 purge => $_purge['preferences.d'],
136 recurse => $_purge['preferences.d'],
137 notify => Class['apt::update'],
140 # manage sources if present
142 create_resources('apt::source', $sources)
144 # manage keys if present
146 create_resources('apt::key', $keys)
148 # manage ppas if present
150 create_resources('apt::ppa', $ppas)
152 # manage settings if present
154 create_resources('apt::setting', $settings)