File: backports.pp

package info (click to toggle)
puppet-module-puppetlabs-apt 9.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 572 kB
  • sloc: ruby: 438; sh: 31; makefile: 2
file content (116 lines) | stat: -rw-r--r-- 3,644 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# @summary Manages backports.
#
# @example Set up a backport source for Ubuntu
#   include apt::backports
#
# @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:
#
#   - Debian: 'http://deb.debian.org/debian'
#
#   - Ubuntu: 'http://archive.ubuntu.com/ubuntu'
#
# @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:
#
#   - Debian: 'main contrib non-free'
#
#   - Ubuntu: 'main universe multiverse restricted'
#
# @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.
#
# @param keyring
#   Absolute path to a file containing the PGP keyring used to sign this
#   repository. Value is passed to the apt::source and used to set signed-by on
#   the source entry.
#
# @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,
  Stdlib::AbsolutePath $keyring                 = "/usr/share/keyrings/${facts['os']['name'].downcase}-archive-keyring.gpg",
  Variant[Integer, String, Hash] $pin           = 200,
  Variant[Hash] $include                        = {},
) {
  include apt

  if $location {
    $_location = $location
  }

  if $release {
    $_release = $release
  }

  if $repos {
    $_repos = $repos
  }

  if (!($facts['os']['name'] == 'Debian' or $facts['os']['name'] == 'Ubuntu')) {
    unless $location and $release and $repos {
      fail('If not on Debian or Ubuntu, you must explicitly pass location, release, and repos')
    }
  }

  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']
  }

  $_keyring = if $key {
    undef
  } else {
    $keyring
  }

  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,
    include  => $include,
    key      => $key,
    keyring  => $_keyring,
    pin      => $_pin,
  }
}