Merge pull request #428 from puppetlabs/daenney/apt-setting
[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   file { '/etc/apt/apt.conf.d/15update-stamp':
34     ensure  => 'file',
35     content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
36     group   => 'root',
37     mode    => '0644',
38     owner   => 'root',
39   }
40
41   file { 'sources.list':
42     ensure  => present,
43     path    => $::apt::sources_list,
44     owner   => root,
45     group   => root,
46     mode    => '0644',
47     content => $sources_list_content,
48     notify  => Exec['apt_update'],
49   }
50
51   file { 'sources.list.d':
52     ensure  => directory,
53     path    => $::apt::sources_list_d,
54     owner   => root,
55     group   => root,
56     purge   => $purge_sources_list_d,
57     recurse => $purge_sources_list_d,
58     notify  => Exec['apt_update'],
59   }
60
61   if $purge_preferences {
62     file { 'apt-preferences':
63       ensure => absent,
64       path   => $::apt::preferences,
65     }
66   }
67
68   file { 'preferences.d':
69     ensure  => directory,
70     path    => $::apt::preferences_d,
71     owner   => root,
72     group   => root,
73     purge   => $purge_preferences_d,
74     recurse => $purge_preferences_d,
75   }
76
77   # Need anchor to provide containment for dependencies.
78   anchor { 'apt::update':
79     require => Class['apt::update'],
80   }
81
82   # manage sources if present
83   if $sources != undef {
84     validate_hash($sources)
85     create_resources('apt::source', $sources)
86   }
87 }