diff options
Diffstat (limited to 'code/environments/production/modules/apt/manifests/backports.pp')
-rw-r--r-- | code/environments/production/modules/apt/manifests/backports.pp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/code/environments/production/modules/apt/manifests/backports.pp b/code/environments/production/modules/apt/manifests/backports.pp new file mode 100644 index 0000000..6a7e87c --- /dev/null +++ b/code/environments/production/modules/apt/manifests/backports.pp @@ -0,0 +1,60 @@ +# Defining backports for the apt class +class apt::backports ( + Optional[String] $location = undef, + Optional[String] $release = undef, + Optional[String] $repos = undef, + Optional[Variant[String, Hash]] $key = undef, + Optional[Variant[Integer, String, Hash]] $pin = 200, +){ + if $location { + $_location = $location + } + if $release { + $_release = $release + } + if $repos { + $_repos = $repos + } + if $key { + $_key = $key + } + if ($facts['lsbdistid'] == 'Debian' or $facts['lsbdistid'] == 'Ubuntu') { + unless $location { + $_location = $::apt::backports['location'] + } + unless $release { + $_release = "${facts['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 $pin =~ Hash { + $_pin = $pin + } elsif $pin =~ Numeric or $pin =~ String { + # 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, + } +} |