Starting to clean up init.pp
[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   if $::osfamily != 'Debian' {
15     fail('This module only works on Debian or derivatives like Ubuntu')
16   }
17
18   include apt::update
19
20   $frequency_options = ['always','daily','weekly','reluctantly']
21   validate_re($apt_update_frequency, $frequency_options)
22
23   validate_bool($purge_sources_list, $purge_sources_list_d,
24                 $purge_preferences, $purge_preferences_d)
25
26   $sources_list_content = $purge_sources_list ? {
27     false => undef,
28     true  => "# Repos managed by puppet.\n",
29   }
30
31   if $always_apt_update == true {
32     Exec <| title=='apt_update' |> {
33       refreshonly => false,
34     }
35   }
36
37   file { '/etc/apt/apt.conf.d/15update-stamp':
38     ensure  => 'file',
39     content => template('apt/_header.erb', 'apt/15update-stamp.erb'),
40     group   => 'root',
41     mode    => '0644',
42     owner   => 'root',
43   }
44
45   $root           = $apt::params::root
46   $apt_conf_d     = $apt::params::apt_conf_d
47   $sources_list_d = $apt::params::sources_list_d
48   $preferences_d  = $apt::params::preferences_d
49   $provider       = $apt::params::provider
50
51   file { 'sources.list':
52     ensure  => present,
53     path    => "${root}/sources.list",
54     owner   => root,
55     group   => root,
56     mode    => '0644',
57     content => $sources_list_content,
58     notify  => Exec['apt_update'],
59   }
60
61   file { 'sources.list.d':
62     ensure  => directory,
63     path    => $sources_list_d,
64     owner   => root,
65     group   => root,
66     purge   => $purge_sources_list_d,
67     recurse => $purge_sources_list_d,
68     notify  => Exec['apt_update'],
69   }
70
71   if $purge_preferences {
72     file { 'apt-preferences':
73       ensure => absent,
74       path   => "${root}/preferences",
75     }
76   }
77
78   file { 'preferences.d':
79     ensure  => directory,
80     path    => $preferences_d,
81     owner   => root,
82     group   => root,
83     purge   => $purge_preferences_d,
84     recurse => $purge_preferences_d,
85   }
86
87   # Need anchor to provide containment for dependencies.
88   anchor { 'apt::update':
89     require => Class['apt::update'],
90   }
91
92   # manage sources if present
93   if $sources != undef {
94     validate_hash($sources)
95     create_resources('apt::source', $sources)
96   }
97 }