9f43b2db26
The 2.x series added a changed behavior for backport pinning to pin to origin instead of release. Pinning to release is the correct behavior for backports though.
65 lines
1.5 KiB
Puppet
65 lines
1.5 KiB
Puppet
class apt::backports (
|
|
$location = undef,
|
|
$release = undef,
|
|
$repos = undef,
|
|
$key = undef,
|
|
$pin = 200,
|
|
){
|
|
if $location {
|
|
validate_string($location)
|
|
$_location = $location
|
|
}
|
|
if $release {
|
|
validate_string($release)
|
|
$_release = $release
|
|
}
|
|
if $repos {
|
|
validate_string($repos)
|
|
$_repos = $repos
|
|
}
|
|
if $key {
|
|
unless is_hash($key) {
|
|
validate_string($key)
|
|
}
|
|
$_key = $key
|
|
}
|
|
if ($::apt::xfacts['lsbdistid'] == 'debian' or $::apt::xfacts['lsbdistid'] == 'ubuntu') {
|
|
unless $location {
|
|
$_location = $::apt::backports['location']
|
|
}
|
|
unless $release {
|
|
$_release = "${::apt::xfacts['lsbdistcodename']}-backports"
|
|
}
|
|
unless $repos {
|
|
$_repos = $::apt::backports['repos']
|
|
}
|
|
unless $key {
|
|
$_key = $::apt::backports['key']
|
|
}
|
|
} else {
|
|
unless $location and $release and $repos and $key {
|
|
fail('If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key')
|
|
}
|
|
}
|
|
|
|
if is_hash($pin) {
|
|
$_pin = $pin
|
|
} elsif is_numeric($pin) or is_string($pin) {
|
|
# apt::source defaults to pinning to origin, but we should pin to release
|
|
# for backports
|
|
$_pin = {
|
|
'priority' => $pin,
|
|
'release' => $_release,
|
|
}
|
|
} else {
|
|
fail('pin must be either a string, number or hash')
|
|
}
|
|
|
|
apt::source { 'backports':
|
|
location => $_location,
|
|
release => $_release,
|
|
repos => $_repos,
|
|
key => $_key,
|
|
pin => $_pin,
|
|
}
|
|
}
|