(MODULES-3414) Limit non-strict parsing to pre-3.5.0 only
[puppet-modules/puppetlabs-apt.git] / manifests / params.pp
1 class apt::params {
2
3   if $::osfamily != 'Debian' {
4     fail('This module only works on Debian or derivatives like Ubuntu')
5   }
6
7   # prior to puppet 3.5.0, defined() couldn't test if a variable was defined.
8   # strict_variables wasn't added until 3.5.0, so this should be fine.
9   if $::puppetversion and versioncmp($::puppetversion, '3.5.0') < 0 {
10     $xfacts = {
11       'lsbdistcodename'     => $::lsbdistcodename,
12       'lsbdistrelease'      => $::lsbdistrelease,
13       'lsbdistid'           => $::lsbdistid,
14     }
15   } else {
16     # Strict variables facts lookup compatibility
17     $xfacts = {
18       'lsbdistcodename' => defined('$lsbdistcodename') ? {
19         true    => $::lsbdistcodename,
20         default => undef,
21       },
22       'lsbdistrelease' => defined('$lsbdistrelease') ? {
23         true    => $::lsbdistrelease,
24         default => undef,
25       },
26       'lsbdistid' => defined('$lsbdistid') ? {
27         true    => $::lsbdistid,
28         default => undef,
29       },
30     }
31   }
32
33   $root           = '/etc/apt'
34   $provider       = '/usr/bin/apt-get'
35   $sources_list   = "${root}/sources.list"
36   $sources_list_d = "${root}/sources.list.d"
37   $conf_d         = "${root}/apt.conf.d"
38   $preferences    = "${root}/preferences"
39   $preferences_d  = "${root}/preferences.d"
40   $keyserver      = 'keyserver.ubuntu.com'
41
42   $config_files = {
43     'conf'   => {
44       'path' => $conf_d,
45       'ext'  => '',
46     },
47     'pref'   => {
48       'path' => $preferences_d,
49       'ext'  => '.pref',
50     },
51     'list'   => {
52       'path' => $sources_list_d,
53       'ext'  => '.list',
54     }
55   }
56
57   $update_defaults = {
58     'frequency' => 'reluctantly',
59     'timeout'   => undef,
60     'tries'     => undef,
61   }
62
63   $proxy_defaults = {
64     'ensure' => undef,
65     'host'   => undef,
66     'port'   => 8080,
67     'https'  => false,
68   }
69
70   $purge_defaults = {
71     'sources.list'   => false,
72     'sources.list.d' => false,
73     'preferences'    => false,
74     'preferences.d'  => false,
75   }
76
77   $source_key_defaults = {
78     'server'  => $keyserver,
79     'options' => undef,
80     'content' => undef,
81     'source'  => undef,
82   }
83
84   $include_defaults = {
85     'deb' => true,
86     'src' => false,
87   }
88
89   case $xfacts['lsbdistid'] {
90     'debian': {
91       case $xfacts['lsbdistcodename'] {
92         'squeeze': {
93           $backports = {
94             'location' => 'http://httpredir.debian.org/debian-backports',
95             'key'      => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
96             'repos'    => 'main contrib non-free',
97           }
98         }
99         default: {
100           $backports = {
101             'location' => 'http://httpredir.debian.org/debian',
102             'key'      => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
103             'repos'    => 'main contrib non-free',
104           }
105         }
106       }
107
108       $ppa_options = undef
109       $ppa_package = undef
110
111     }
112     'ubuntu': {
113       $backports = {
114         'location' => 'http://archive.ubuntu.com/ubuntu',
115         'key'      => '630239CC130E1A7FD81A27B140976EAF437D05B5',
116         'repos'    => 'main universe multiverse restricted',
117       }
118
119       if $xfacts['lsbdistcodename'] == 'lucid' {
120           $ppa_options        = undef
121           $ppa_package        = 'python-software-properties'
122       } elsif $xfacts['lsbdistcodename'] == 'precise' {
123           $ppa_options        = '-y'
124           $ppa_package        = 'python-software-properties'
125       } elsif versioncmp($xfacts['lsbdistrelease'], '14.04') >= 0 {
126           $ppa_options        = '-y'
127           $ppa_package        = 'software-properties-common'
128       } else {
129           $ppa_options        = '-y'
130           $ppa_package        = 'python-software-properties'
131       }
132     }
133     undef: {
134       fail('Unable to determine lsbdistid, please install lsb-release first')
135     }
136     default: {
137       $ppa_options = undef
138       $ppa_package = undef
139       $backports   = undef
140     }
141   }
142 }