Merge pull request #444 from puppetlabs/daenney/parse-setting-from-name
[puppet-modules/puppetlabs-apt.git] / manifests / init.pp
1 #
2 class apt(
3   $always_apt_update    = false,
4   $apt_update_frequency = 'reluctantly',
5   $purge_sources_list   = false,
6   $purge_sources_list_d = false,
7   $purge_preferences    = false,
8   $purge_preferences_d  = false,
9   $update_timeout       = undef,
10   $update_tries         = undef,
11   $sources              = undef,
12 ) inherits ::apt::params {
13
14   include apt::update
15
16   $frequency_options = ['always','daily','weekly','reluctantly']
17   validate_re($apt_update_frequency, $frequency_options)
18
19   validate_bool($purge_sources_list, $purge_sources_list_d,
20                 $purge_preferences, $purge_preferences_d)
21
22   $sources_list_content = $purge_sources_list ? {
23     false => undef,
24     true  => "# Repos managed by puppet.\n",
25   }
26
27   if $always_apt_update == true {
28     Exec <| title=='apt_update' |> {
29       refreshonly => false,
30     }
31   }
32
33   apt::setting { 'conf-update-stamp':
34     priority => 15,
35     content  => template('apt/_header.erb', 'apt/15update-stamp.erb'),
36   }
37
38   file { 'sources.list':
39     ensure  => present,
40     path    => $::apt::sources_list,
41     owner   => root,
42     group   => root,
43     mode    => '0644',
44     content => $sources_list_content,
45     notify  => Exec['apt_update'],
46   }
47
48   file { 'sources.list.d':
49     ensure  => directory,
50     path    => $::apt::sources_list_d,
51     owner   => root,
52     group   => root,
53     purge   => $purge_sources_list_d,
54     recurse => $purge_sources_list_d,
55     notify  => Exec['apt_update'],
56   }
57
58   if $purge_preferences {
59     file { 'apt-preferences':
60       ensure => absent,
61       path   => $::apt::preferences,
62     }
63   }
64
65   file { 'preferences.d':
66     ensure  => directory,
67     path    => $::apt::preferences_d,
68     owner   => root,
69     group   => root,
70     purge   => $purge_preferences_d,
71     recurse => $purge_preferences_d,
72   }
73
74   # Need anchor to provide containment for dependencies.
75   anchor { 'apt::update':
76     require => Class['apt::update'],
77   }
78
79   # manage sources if present
80   if $sources != undef {
81     validate_hash($sources)
82     create_resources('apt::source', $sources)
83   }
84 }