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