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['always'] {
18 validate_bool($update['always'])
20 if $update['timeout'] {
21 unless is_integer($update['timeout']) {
22 fail('timeout value for update must be an integer')
26 unless is_integer($update['tries']) {
27 fail('tries value for update must be an integer')
31 $_update = merge($::apt::update_defaults, $update)
35 if $purge['sources.list'] {
36 validate_bool($purge['sources.list'])
38 if $purge['sources.list.d'] {
39 validate_bool($purge['sources.list.d'])
41 if $purge['preferences'] {
42 validate_bool($purge['preferences'])
44 if $purge['preferences.d'] {
45 validate_bool($purge['preferences.d'])
48 $_purge = merge($::apt::purge_defaults, $purge)
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)
71 apt::setting { 'conf-proxy':
73 content => template('apt/_header.erb', 'apt/proxy.erb'),
77 $sources_list_content = $_purge['sources.list'] ? {
79 true => "# Repos managed by puppet.\n",
82 $preferences_ensure = $_purge['preferences'] ? {
87 if $_update['always'] {
88 Exec <| title=='apt_update' |> {
93 apt::setting { 'conf-update-stamp':
95 content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
98 file { 'sources.list':
100 path => $::apt::sources_list,
104 content => $sources_list_content,
105 notify => Exec['apt_update'],
108 file { 'sources.list.d':
110 path => $::apt::sources_list_d,
114 purge => $_purge['sources.list.d'],
115 recurse => $_purge['sources.list.d'],
116 notify => Exec['apt_update'],
119 file { 'preferences':
120 ensure => $preferences_ensure,
121 path => $::apt::preferences,
125 notify => Exec['apt_update'],
128 file { 'preferences.d':
130 path => $::apt::preferences_d,
134 purge => $_purge['preferences.d'],
135 recurse => $_purge['preferences.d'],
136 notify => Exec['apt_update'],
139 # Need anchor to provide containment for dependencies.
140 anchor { 'apt::update':
141 require => Class['apt::update'],
144 # manage sources if present
146 create_resources('apt::source', $sources)
148 # manage keys if present
150 create_resources('apt::key', $keys)
152 # manage ppas if present
154 create_resources('apt::ppa', $ppas)
156 # manage settings if present
158 create_resources('apt::setting', $settings)