3 # Manage APT (Advanced Packaging Tool)
15 ) inherits ::apt::params {
17 $frequency_options = ['always','daily','weekly','reluctantly']
18 validate_hash($update)
19 if $update['frequency'] {
20 validate_re($update['frequency'], $frequency_options)
22 if $update['timeout'] {
23 unless is_integer($update['timeout']) {
24 fail('timeout value for update must be an integer')
28 unless is_integer($update['tries']) {
29 fail('tries value for update must be an integer')
33 $_update = merge($::apt::update_defaults, $update)
37 if $purge['sources.list'] {
38 validate_bool($purge['sources.list'])
40 if $purge['sources.list.d'] {
41 validate_bool($purge['sources.list.d'])
43 if $purge['preferences'] {
44 validate_bool($purge['preferences'])
46 if $purge['preferences.d'] {
47 validate_bool($purge['preferences.d'])
50 $_purge = merge($::apt::purge_defaults, $purge)
54 validate_re($proxy['ensure'], ['file', 'present', 'absent'])
57 validate_string($proxy['host'])
60 unless is_integer($proxy['port']) {
61 fail('$proxy port must be an integer')
65 validate_bool($proxy['https'])
68 $_proxy = merge($apt::proxy_defaults, $proxy)
71 validate_hash($sources)
73 validate_hash($settings)
77 if $_proxy['ensure'] == 'absent' or $_proxy['host'] {
78 apt::setting { 'conf-proxy':
79 ensure => $_proxy['ensure'],
81 content => template('apt/_conf_header.erb', 'apt/proxy.erb'),
85 $sources_list_content = $_purge['sources.list'] ? {
86 true => "# Repos managed by puppet.\n",
90 $preferences_ensure = $_purge['preferences'] ? {
95 if $_update['frequency'] == 'always' {
96 Exec <| title=='apt_update' |> {
101 apt::setting { 'conf-update-stamp':
103 content => template('apt/_conf_header.erb', 'apt/15update-stamp.erb'),
106 file { 'sources.list':
108 path => $::apt::sources_list,
112 content => $sources_list_content,
113 notify => Class['apt::update'],
116 file { 'sources.list.d':
118 path => $::apt::sources_list_d,
122 purge => $_purge['sources.list.d'],
123 recurse => $_purge['sources.list.d'],
124 notify => Class['apt::update'],
127 file { 'preferences':
128 ensure => $preferences_ensure,
129 path => $::apt::preferences,
133 notify => Class['apt::update'],
136 file { 'preferences.d':
138 path => $::apt::preferences_d,
142 purge => $_purge['preferences.d'],
143 recurse => $_purge['preferences.d'],
144 notify => Class['apt::update'],
148 create_resources('apt::conf', $confs)
150 # manage sources if present
152 create_resources('apt::source', $sources)
154 # manage keys if present
156 create_resources('apt::key', $keys)
158 # manage ppas if present
160 create_resources('apt::ppa', $ppas)
162 # manage settings if present
164 create_resources('apt::setting', $settings)
167 # manage pins if present
169 create_resources('apt::pin', $pins)