summaryrefslogtreecommitdiff
path: root/code/environments/production/modules/apt/manifests/backports.pp
diff options
context:
space:
mode:
Diffstat (limited to 'code/environments/production/modules/apt/manifests/backports.pp')
-rw-r--r--code/environments/production/modules/apt/manifests/backports.pp60
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,
+ }
+}