apt::source: Make location mostly required.
[puppet-modules/puppetlabs-apt.git] / manifests / params.pp
1 class apt::params {
2
3   if defined('$caller_module_name') and $caller_module_name and $caller_module_name != $module_name {
4     fail('apt::params is a private class and cannot be accessed directly')
5   }
6
7   if $::osfamily != 'Debian' {
8     fail('This module only works on Debian or derivatives like Ubuntu')
9   }
10
11   # Strict variables facts lookup compatibility
12   $xfacts = {
13     'lsbdistcodename' => defined('$lsbdistcodename') ? {
14       true    => $::lsbdistcodename,
15       default => undef,
16     },
17     'lsbdistrelease' => defined('$lsbdistrelease') ? {
18       true    => $::lsbdistrelease,
19       default => undef,
20     },
21     'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
22       true    => $::lsbmajdistrelease,
23       default => undef,
24     },
25     'lsbdistdescription' => defined('$lsbdistdescription') ? {
26       true    => $::lsbdistdescription,
27       default => undef,
28     },
29     'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
30       true    => $::lsbminordistrelease,
31       default => undef,
32     },
33     'lsbdistid' => defined('$lsbdistid') ? {
34       true    => $::lsbdistid,
35       default => undef,
36     },
37   }
38
39   $root           = '/etc/apt'
40   $provider       = '/usr/bin/apt-get'
41   $sources_list   = "${root}/sources.list"
42   $sources_list_d = "${root}/sources.list.d"
43   $conf_d         = "${root}/apt.conf.d"
44   $preferences    = "${root}/preferences"
45   $preferences_d  = "${root}/preferences.d"
46   $keyserver      = 'keyserver.ubuntu.com'
47
48   $config_files = {
49     'conf'   => {
50       'path' => $conf_d,
51       'ext'  => '',
52     },
53     'pref'   => {
54       'path' => $preferences_d,
55       'ext'  => '',
56     },
57     'list'   => {
58       'path' => $sources_list_d,
59       'ext'  => '.list',
60     }
61   }
62
63   $update_defaults = {
64     'always'    => false,
65     'frequency' => 'reluctantly',
66     'timeout'   => undef,
67     'tries'     => undef,
68   }
69
70   $proxy_defaults = {
71     'host'  => undef,
72     'port'  => 8080,
73     'https' => false,
74   }
75
76   $purge_defaults = {
77     'sources.list'   => true,
78     'sources.list.d' => true,
79     'preferences'    => true,
80     'preferences.d'  => true,
81   }
82
83   $source_key_defaults = {
84     'server'  => $keyserver,
85     'options' => undef,
86     'content' => undef,
87     'source'  => undef,
88   }
89
90   $include_defaults = {
91     'deb' => true,
92     'src' => false,
93   }
94
95   case $xfacts['lsbdistid'] {
96     'ubuntu', 'debian': {
97       $distid = $xfacts['lsbdistid']
98       $distcodename = $xfacts['lsbdistcodename']
99     }
100     'linuxmint': {
101       if $xfacts['lsbdistcodename'] == 'debian' {
102         $distid = 'debian'
103         $distcodename = 'wheezy'
104       } else {
105         $distid = 'ubuntu'
106         $distcodename = $xfacts['lsbdistcodename'] ? {
107           'qiana'  => 'trusty',
108           'petra'  => 'saucy',
109           'olivia' => 'raring',
110           'nadia'  => 'quantal',
111           'maya'   => 'precise',
112         }
113       }
114     }
115     undef: {
116       fail('Unable to determine lsbdistid, is lsb-release installed?')
117     }
118     default: {
119       fail("Unsupported lsbdistid (${::lsbdistid})")
120     }
121   }
122   case $distid {
123     'ubuntu': {
124       case $distcodename {
125         'lucid': {
126           $ppa_options        = undef
127           $ppa_package        = 'python-software-properties'
128         }
129         'precise': {
130           $ppa_options        = '-y'
131           $ppa_package        = 'python-software-properties'
132         }
133         'trusty', 'utopic', 'vivid': {
134           $ppa_options        = '-y'
135           $ppa_package        = 'software-properties-common'
136         }
137         default: {
138           $ppa_options        = '-y'
139           $ppa_package        = 'software-properties-common'
140         }
141       }
142     }
143     '', default: {
144       $ppa_options = undef
145       $ppa_package = undef
146     }
147   }
148 }