X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=manifests%2Fbackports.pp;h=0ef45333d5ae87b3cf7debd89d18b32bdf05432a;hb=refs%2Fheads%2Frelease-prep;hp=ecc75048e6c10ff523dbb20355a7d6ab4cbc5374;hpb=3684f88372959cb8dd6eb5bce99b6a07db43f058;p=puppet-modules%2Fpuppetlabs-apt.git diff --git a/manifests/backports.pp b/manifests/backports.pp index ecc7504..0ef4533 100644 --- a/manifests/backports.pp +++ b/manifests/backports.pp @@ -1,45 +1,116 @@ -# This adds the necessary components to get backports for ubuntu and debian +# @summary Manages backports. # -# == Parameters +# @example Set up a backport source for Linux Mint qiana +# class { 'apt::backports': +# location => 'http://us.archive.ubuntu.com/ubuntu', +# release => 'trusty-backports', +# repos => 'main universe multiverse restricted', +# key => { +# id => '630239CC130E1A7FD81A27B140976EAF437D05B5', +# server => 'keyserver.ubuntu.com', +# }, +# } # -# [*release*] -# The ubuntu/debian release name. Defaults to $lsbdistcodename. Setting this -# manually can cause undefined behavior. (Read: universe exploding) +# @param location +# Specifies an Apt repository containing the backports to manage. Valid options: a string containing a URL. Default value for Debian and +# Ubuntu varies: # -# == Examples +# - Debian: 'http://deb.debian.org/debian' # -# include apt::backports +# - Ubuntu: 'http://archive.ubuntu.com/ubuntu' # -# class { 'apt::backports': -# release => 'natty', -# } +# @param release +# Specifies a distribution of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file. +# Default: on Debian and Ubuntu, `${fact('os.distro.codename')}-backports`. We recommend keeping this default, except on other operating +# systems. +# +# @param repos +# Specifies a component of the Apt repository containing the backports to manage. Used in populating the `source.list` configuration file. +# Default value for Debian and Ubuntu varies: # -# == Authors +# - Debian: 'main contrib non-free' # -# Ben Hughes, I think. At least blame him if this goes wrong. I just added puppet doc. +# - Ubuntu: 'main universe multiverse restricted' # -# == Copyright +# @param key +# Specifies a key to authenticate the backports. Valid options: a string to be passed to the id parameter of the apt::key defined type, or a +# hash of parameter => value pairs to be passed to apt::key's id, server, content, source, and/or options parameters. Default value +# for Debian and Ubuntu varies: # -# Copyright 2011 Puppet Labs Inc, unless otherwise noted. -class apt::backports( - $release = $::lsbdistcodename, - $location = $apt::params::backports_location -) inherits apt::params { +# - Debian: 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553' +# +# - Ubuntu: '630239CC130E1A7FD81A27B140976EAF437D05B5' +# +# @param pin +# Specifies a pin priority for the backports. Valid options: a number or string to be passed to the `id` parameter of the `apt::pin` defined +# type, or a hash of `parameter => value` pairs to be passed to `apt::pin`'s corresponding parameters. +# +# @param include +# Specifies whether to include 'deb' or 'src', or both. +# +class apt::backports ( + Optional[String] $location = undef, + Optional[String] $release = undef, + Optional[String] $repos = undef, + Optional[Variant[String, Hash]] $key = undef, + Variant[Integer, String, Hash] $pin = 200, + Variant[Hash] $include = {}, +) { + include apt + + if $location { + $_location = $location + } + if $release { + $_release = $release + } + if $repos { + $_repos = $repos + } + if $key { + $_key = $key + } + if (!($facts['os']['name'] == 'Debian' or $facts['os']['name'] == 'Ubuntu')) { + unless $location and $release and $repos and $key { + fail('If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key') + } + } + unless $location { + $_location = $apt::backports['location'] + } + unless $release { + if fact('os.distro.codename') { + $_release = "${fact('os.distro.codename')}-backports" + } else { + fail('os.distro.codename fact not available: release parameter required') + } + } + unless $repos { + $_repos = $apt::backports['repos'] + } + unless $key { + $_key = $apt::backports['key'] + } - $release_real = downcase($release) + 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.list': - location => $location, - release => "${release_real}-backports", - repos => $::lsbdistid ? { - 'debian' => 'main contrib non-free', - 'ubuntu' => 'universe multiverse restricted', - }, - key => $::lsbdistid ? { - 'debian' => '55BE302B', - 'ubuntu' => '437D05B5', - }, - key_server => 'pgp.mit.edu', - pin => '200', + apt::source { 'backports': + location => $_location, + release => $_release, + repos => $_repos, + include => $include, + key => $_key, + pin => $_pin, } }