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_string($proxy['host'])
52 unless is_integer($proxy['port']) {
53 fail('$proxy port must be an integer')
57 validate_bool($proxy['https'])
60 $_proxy = merge($apt::proxy_defaults, $proxy)
62 validate_hash($sources)
64 validate_hash($settings)
68 apt::setting { 'conf-proxy':
70 content => template('apt/_header.erb', 'apt/proxy.erb'),
74 $sources_list_content = $_purge['sources.list'] ? {
75 true => "# Repos managed by puppet.\n",
79 $preferences_ensure = $_purge['preferences'] ? {
84 if $_update['frequency'] == 'always' {
85 Exec <| title=='apt_update' |> {
90 apt::setting { 'conf-update-stamp':
92 content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
95 file { 'sources.list':
97 path => $::apt::sources_list,
101 content => $sources_list_content,
102 notify => Exec['apt_update'],
105 file { 'sources.list.d':
107 path => $::apt::sources_list_d,
111 purge => $_purge['sources.list.d'],
112 recurse => $_purge['sources.list.d'],
113 notify => Exec['apt_update'],
116 file { 'preferences':
117 ensure => $preferences_ensure,
118 path => $::apt::preferences,
122 notify => Exec['apt_update'],
125 file { 'preferences.d':
127 path => $::apt::preferences_d,
131 purge => $_purge['preferences.d'],
132 recurse => $_purge['preferences.d'],
133 notify => Exec['apt_update'],
136 anchor { 'apt_first': } -> Class['apt::update'] -> anchor { 'apt_last': }
138 # manage sources if present
140 create_resources('apt::source', $sources)
142 # manage keys if present
144 create_resources('apt::key', $keys)
146 # manage ppas if present
148 create_resources('apt::ppa', $ppas)
150 # manage settings if present
152 create_resources('apt::setting', $settings)