|
1 | | -# requires |
2 | | -# puppetlabs-apt |
3 | | -# puppetlabs-stdlib |
4 | | -# |
5 | 1 | # @api private |
6 | 2 | # |
7 | 3 | # @param location |
8 | 4 | # @param repos |
9 | 5 | # @param include_src |
10 | | -# @param key |
11 | 6 | # @param key_source |
12 | 7 | # @param key_content |
13 | 8 | # @param architecture |
14 | 9 | # |
15 | 10 | class rabbitmq::repo::apt ( |
16 | | - String[1] $location = 'https://packagecloud.io/rabbitmq/rabbitmq-server', |
17 | | - String[1] $repos = 'main', |
18 | | - Boolean $include_src = false, |
19 | | - String[1] $key = '8C695B0219AFDEB04A058ED8F4E789204D206F89', |
20 | | - String[1] $key_source = $rabbitmq::package_gpg_key, |
| 11 | + Array[String[1]] $location = ["'"], # See Hiera |
| 12 | + Array[String[1]] $repos = ['main'], |
| 13 | + Boolean $include_src = false, |
| 14 | + # String[1] $key_source = $rabbitmq::package_gpg_key, |
21 | 15 | Optional[String[1]] $key_content = $rabbitmq::key_content, |
22 | 16 | Optional[String[1]] $architecture = undef, |
23 | 17 | ) { |
24 | | - $osname = downcase($facts['os']['name']) |
| 18 | + # https://github.com/puppetlabs/puppetlabs-apt/issues/1184 |
| 19 | + include apt |
| 20 | + |
25 | 21 | $pin = $rabbitmq::package_apt_pin |
26 | 22 |
|
| 23 | + # Uses legacy trusted.gpg, because apt::keyring does not de-armor the key |
| 24 | + apt::key { 'com.rabbitmq.team.gpg': |
| 25 | + id => '0A9AF2115F4687BD29803A206B73A36E6026DFCA', |
| 26 | + server => 'keys.openpgp.org', |
| 27 | + } |
| 28 | + |
27 | 29 | apt::source { 'rabbitmq': |
28 | | - ensure => present, |
29 | | - location => "${location}/${osname}", |
30 | | - repos => $repos, |
31 | | - include => { 'src' => $include_src }, |
32 | | - key => { |
33 | | - 'id' => $key, |
34 | | - 'source' => $key_source, |
35 | | - 'content' => $key_content, |
36 | | - }, |
37 | | - architecture => $architecture, |
| 30 | + source_format => 'sources', |
| 31 | + location => $location, |
| 32 | + repos => $repos, |
| 33 | + release => [$facts['os']['distro']['codename']], |
| 34 | + types => ['deb'], |
| 35 | + architecture => $architecture, |
| 36 | + keyring => '/etc/apt/trusted.gpg', |
| 37 | + comment => 'Modern Erlang/OTP and RabbitMQ releases', |
38 | 38 | } |
39 | 39 |
|
40 | 40 | if $pin { |
41 | | - apt::pin { 'rabbitmq': |
42 | | - packages => '*', |
43 | | - priority => $pin, |
44 | | - origin => inline_template('<%= require \'uri\'; URI(@location).host %>'), |
| 41 | + # Determine the Erlang compatible with RabbitMQ one, otherwise dependencies |
| 42 | + # install fails |
| 43 | + # https://www.rabbitmq.com/docs/which-erlang |
| 44 | + case $rabbitmq::rabbitmq_version { |
| 45 | + '3.13': { |
| 46 | + $erlang_pin_version = '1:26.*' |
| 47 | + $rabbitmq_pin_version = '3.13.*' |
| 48 | + } |
| 49 | + '3.12': { |
| 50 | + $erlang_pin_version = '1:26.*' |
| 51 | + $rabbitmq_pin_version = '3.12.*' |
| 52 | + } |
| 53 | + '3.11': { |
| 54 | + $erlang_pin_version = '1:25.*' |
| 55 | + $rabbitmq_pin_version = '3.11.*' |
| 56 | + } |
| 57 | + '3.10': { |
| 58 | + $erlang_pin_version = '1:25.*' |
| 59 | + $rabbitmq_pin_version = '3.10.*' |
| 60 | + } |
| 61 | + '3.9': { |
| 62 | + $erlang_pin_version = '1:25.*' |
| 63 | + $rabbitmq_pin_version = '3.9.*' |
| 64 | + } |
| 65 | + '3.8': { |
| 66 | + $erlang_pin_version = '1:24.*' |
| 67 | + $rabbitmq_pin_version = '3.8.*' |
| 68 | + } |
| 69 | + '3.7': { |
| 70 | + $erlang_pin_version = '1:22.*' |
| 71 | + $rabbitmq_pin_version = '3.7.*' |
| 72 | + } |
| 73 | + default: { |
| 74 | + $erlang_pin_version = false |
| 75 | + $rabbitmq_pin_version = false |
| 76 | + } |
| 77 | + } |
| 78 | + |
| 79 | + if $rabbitmq_pin_version { |
| 80 | + apt::pin { 'rabbitmq': |
| 81 | + packages => 'rabbitmq*', |
| 82 | + explanation => "Pin RabbitMQ packages to ${rabbitmq::rabbitmq_version}", |
| 83 | + priority => $pin, |
| 84 | + version => $rabbitmq_pin_version, |
| 85 | + } |
| 86 | + } |
| 87 | + |
| 88 | + if $erlang_pin_version { |
| 89 | + apt::pin { 'erlang': |
| 90 | + packages => 'erlang*', |
| 91 | + explanation => "Pin Erlang packages to versions compatible with RabbitMQ ${rabbitmq::rabbitmq_version}", |
| 92 | + priority => $pin, |
| 93 | + version => $erlang_pin_version, |
| 94 | + } |
45 | 95 | } |
46 | 96 | } |
47 | 97 | } |
0 commit comments