1c707c7d32
`$xfacts` now contains and guards all `lsb*` facts. Looking up any `lsb*`-related fact should now always be done through `$::apt::xfacts` to ensure that the values are always set to either the value of the fact or undef. This avoids all sorts of kerfuffles with strict variables.
143 lines
3.6 KiB
Puppet
143 lines
3.6 KiB
Puppet
class apt::params {
|
|
|
|
if defined('$caller_module_name') and $caller_module_name and $caller_module_name != $module_name {
|
|
fail('apt::params is a private class and cannot be accessed directly')
|
|
}
|
|
|
|
if $::osfamily != 'Debian' {
|
|
fail('This module only works on Debian or derivatives like Ubuntu')
|
|
}
|
|
|
|
# Strict variables facts lookup compatibility
|
|
$xfacts = {
|
|
'lsbdistcodename' => defined('$lsbdistcodename') ? {
|
|
true => $::lsbdistcodename,
|
|
default => undef,
|
|
},
|
|
'lsbdistrelease' => defined('$lsbdistrelease') ? {
|
|
true => $::lsbdistrelease,
|
|
default => undef,
|
|
},
|
|
'lsbmajdistrelease' => defined('$lsbmajdistrelease') ? {
|
|
true => $::lsbmajdistrelease,
|
|
default => undef,
|
|
},
|
|
'lsbdistdescription' => defined('$lsbdistdescription') ? {
|
|
true => $::lsbdistdescription,
|
|
default => undef,
|
|
},
|
|
'lsbminordistrelease' => defined('$lsbminordistrelease') ? {
|
|
true => $::lsbminordistrelease,
|
|
default => undef,
|
|
},
|
|
'lsbdistid' => defined('$lsbdistid') ? {
|
|
true => $::lsbdistid,
|
|
default => undef,
|
|
},
|
|
}
|
|
|
|
$root = '/etc/apt'
|
|
$provider = '/usr/bin/apt-get'
|
|
$sources_list = "${root}/sources.list"
|
|
$sources_list_d = "${root}/sources.list.d"
|
|
$conf_d = "${root}/apt.conf.d"
|
|
$preferences = "${root}/preferences"
|
|
$preferences_d = "${root}/preferences.d"
|
|
$keyserver = 'keyserver.ubuntu.com'
|
|
|
|
$config_files = {
|
|
'conf' => {
|
|
'path' => $conf_d,
|
|
'ext' => '',
|
|
},
|
|
'pref' => {
|
|
'path' => $preferences_d,
|
|
'ext' => '',
|
|
},
|
|
'list' => {
|
|
'path' => $sources_list_d,
|
|
'ext' => '.list',
|
|
}
|
|
}
|
|
|
|
$update_defaults = {
|
|
'always' => false,
|
|
'frequency' => 'reluctantly',
|
|
'timeout' => undef,
|
|
'tries' => undef,
|
|
}
|
|
|
|
$proxy_defaults = {
|
|
'host' => undef,
|
|
'port' => 8080,
|
|
'https' => false,
|
|
}
|
|
|
|
$purge_defaults = {
|
|
'sources.list' => true,
|
|
'sources.list.d' => true,
|
|
'preferences' => true,
|
|
'preferences.d' => true,
|
|
}
|
|
|
|
$source_key_defaults = {
|
|
'server' => $keyserver,
|
|
'options' => undef,
|
|
'content' => undef,
|
|
'source' => undef,
|
|
}
|
|
|
|
case $xfacts['lsbdistid'] {
|
|
'ubuntu', 'debian': {
|
|
$distid = $xfacts['lsbdistid']
|
|
$distcodename = $xfacts['lsbdistcodename']
|
|
}
|
|
'linuxmint': {
|
|
if $xfacts['lsbdistcodename'] == 'debian' {
|
|
$distid = 'debian'
|
|
$distcodename = 'wheezy'
|
|
} else {
|
|
$distid = 'ubuntu'
|
|
$distcodename = $xfacts['lsbdistcodename'] ? {
|
|
'qiana' => 'trusty',
|
|
'petra' => 'saucy',
|
|
'olivia' => 'raring',
|
|
'nadia' => 'quantal',
|
|
'maya' => 'precise',
|
|
}
|
|
}
|
|
}
|
|
undef: {
|
|
fail('Unable to determine lsbdistid, is lsb-release installed?')
|
|
}
|
|
default: {
|
|
fail("Unsupported lsbdistid (${::lsbdistid})")
|
|
}
|
|
}
|
|
case $distid {
|
|
'ubuntu': {
|
|
case $distcodename {
|
|
'lucid': {
|
|
$ppa_options = undef
|
|
$ppa_package = 'python-software-properties'
|
|
}
|
|
'precise': {
|
|
$ppa_options = '-y'
|
|
$ppa_package = 'python-software-properties'
|
|
}
|
|
'trusty', 'utopic', 'vivid': {
|
|
$ppa_options = '-y'
|
|
$ppa_package = 'software-properties-common'
|
|
}
|
|
default: {
|
|
$ppa_options = '-y'
|
|
$ppa_package = 'software-properties-common'
|
|
}
|
|
}
|
|
}
|
|
'', default: {
|
|
$ppa_options = undef
|
|
$ppa_package = undef
|
|
}
|
|
}
|
|
}
|