Skip to content

Commit 8cbbe10

Browse files
committed
Add official support for CentOS/RHEL 8
This change makes CentOS 8 and RHEL 8 as a suppotrted OS. For CentOS 8 RabbitMQ package is not available in EPEL and PackageCloud repos should be used instead. This change adds support for additional erlang repository so that users can install rabbitmq correctly without missing dependencies. [1] https://www.rabbitmq.com/install-rpm.html
1 parent 1e8c72e commit 8cbbe10

File tree

15 files changed

+94
-79
lines changed

15 files changed

+94
-79
lines changed

data/family/RedHat.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
---
2+
rabbitmq::python_package: 'python3'
23
rabbitmq::package_name: 'rabbitmq-server'
34
rabbitmq::service_name: 'rabbitmq-server'
45
rabbitmq::package_gpg_key: 'https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc'
5-
rabbitmq::repo_gpg_key: 'https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey'
6+
rabbitmq::repo_gpg_key: 'https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey'
7+
rabbitmq::erlang_repo_gpg_key: 'https://packagecloud.io/rabbitmq/erlang/gpgkey'

manifests/init.pp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,10 @@
228228
# RPM package GPG key to import. Uses source method. Should be a URL for Debian/RedHat OS family, or a file name for
229229
# RedHat OS family. Set to https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey for Debian/RedHat OS Family by
230230
# default. Note, that `key_content`, if specified, would override this parameter for Debian OS family.
231+
# @param erlang_repo_gpg_key
232+
# RPM package GPG key to import for erlang packages. Uses source method. This is currently used by RedHat OS Family
233+
# only and should be a file name. Set to https://packagecloud.io/rabbitmq/erlang/gpgkey for RedHat OS Faimily by
234+
# default.
231235
# @param package_name
232236
# Name(s) of the package(s) to install
233237
# @param port
@@ -371,6 +375,7 @@
371375
String $package_ensure = 'installed',
372376
Optional[String] $package_gpg_key = undef,
373377
Optional[String] $repo_gpg_key = undef,
378+
Optional[String] $erlang_repo_gpg_key = undef,
374379
Variant[String, Array] $package_name = 'rabbitmq',
375380
Optional[String] $package_source = undef,
376381
Optional[String] $package_provider = undef,
@@ -491,6 +496,9 @@
491496
'RedHat': {
492497
contain rabbitmq::repo::rhel
493498
Class['rabbitmq::repo::rhel'] -> Class['rabbitmq::install']
499+
500+
contain rabbitmq::repo::rhel::erlang
501+
Class['rabbitmq::repo::rhel::erlang'] -> Class['rabbitmq::install']
494502
}
495503
'Debian': {
496504
contain rabbitmq::repo::apt

manifests/repo/rhel/erlang.pp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Makes sure that the Packagecloud repo for erlang is installed
2+
#
3+
# @api private
4+
class rabbitmq::repo::rhel::erlang (
5+
$location = "https://packagecloud.io/rabbitmq/erlang/el/${facts['os'][release][major]}/\$basearch",
6+
String $repo_key_source = $rabbitmq::erlang_repo_gpg_key,
7+
) {
8+
yumrepo { 'rabbitmq-erlang':
9+
ensure => present,
10+
name => 'rabbitmq_rabbitmq-erlang',
11+
baseurl => $location,
12+
gpgkey => $repo_key_source,
13+
enabled => 1,
14+
gpgcheck => 1,
15+
}
16+
17+
# This may still be needed to prevent warnings
18+
# packagecloud key is gpg-pubkey-df309a0b-5bbb8d6e
19+
exec { "rpm --import ${repo_key_source}":
20+
path => ['/bin','/usr/bin','/sbin','/usr/sbin'],
21+
unless => 'rpm -q gpg-pubkey-df309a0b-5bbb8d6e 2>/dev/null',
22+
}
23+
}

metadata.json

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
{
1212
"operatingsystem": "RedHat",
1313
"operatingsystemrelease": [
14-
"7"
14+
"7",
15+
"8"
1516
]
1617
},
1718
{
1819
"operatingsystem": "CentOS",
1920
"operatingsystemrelease": [
20-
"7"
21+
"7",
22+
"8"
2123
]
2224
},
2325
{

spec/acceptance/class_spec.rb

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
service_name = 'rabbitmq'
1313
end
1414

15+
repos_ensure = (fact('os.family') == 'RedHat')
16+
1517
context 'default class inclusion' do
1618
let(:pp) do
1719
<<-EOS
18-
class { 'rabbitmq': }
19-
if $facts['os']['family'] == 'RedHat' {
20-
class { 'erlang': epel_enable => true}
21-
Class['erlang'] -> Class['rabbitmq']
20+
class { 'rabbitmq':
21+
repos_ensure => #{repos_ensure},
2222
}
2323
EOS
2424
end
@@ -52,12 +52,9 @@ class { 'erlang': epel_enable => true}
5252
let(:pp) do
5353
<<-EOS
5454
class { 'rabbitmq':
55+
repos_ensure => #{repos_ensure},
5556
service_ensure => 'stopped',
5657
}
57-
if $facts['os']['family'] == 'RedHat' {
58-
class { 'erlang': epel_enable => true}
59-
Class['erlang'] -> Class['rabbitmq']
60-
}
6158
EOS
6259
end
6360

@@ -72,21 +69,16 @@ class { 'erlang': epel_enable => true}
7269
context 'service is unmanaged' do
7370
it 'runs successfully' do
7471
pp_pre = <<-EOS
75-
class { 'rabbitmq': }
76-
if $facts['os']['family'] == 'RedHat' {
77-
class { 'erlang': epel_enable => true}
78-
Class['erlang'] -> Class['rabbitmq']
72+
class { 'rabbitmq':
73+
repos_ensure => #{repos_ensure},
7974
}
8075
EOS
8176

8277
pp = <<-EOS
8378
class { 'rabbitmq':
79+
repos_ensure => #{repos_ensure},
8480
service_manage => false,
85-
service_ensure => 'stopped',
86-
}
87-
if $facts['os']['family'] == 'RedHat' {
88-
class { 'erlang': epel_enable => true}
89-
Class['erlang'] -> Class['rabbitmq']
81+
service_ensure => 'stopped',
9082
}
9183
EOS
9284

@@ -104,6 +96,7 @@ class { 'erlang': epel_enable => true}
10496
let(:pp) do
10597
<<-EOS
10698
class { 'rabbitmq':
99+
repos_ensure => #{repos_ensure},
107100
service_manage => true,
108101
port => 5672,
109102
admin_enable => true,
@@ -137,6 +130,7 @@ class { 'rabbitmq':
137130
let(:pp) do
138131
<<-EOS
139132
class { 'rabbitmq':
133+
repos_ensure => #{repos_ensure},
140134
service_manage => true,
141135
port => 5672,
142136
admin_enable => true,
@@ -172,6 +166,7 @@ class { 'rabbitmq':
172166
let(:pp) do
173167
<<-EOS
174168
class { 'rabbitmq':
169+
repos_ensure => #{repos_ensure},
175170
service_manage => true,
176171
admin_enable => true,
177172
node_ip_address => '0.0.0.0',
@@ -203,6 +198,7 @@ class { 'rabbitmq':
203198
let(:pp) do
204199
<<-EOS
205200
class { 'rabbitmq':
201+
repos_ensure => #{repos_ensure},
206202
service_manage => true,
207203
port => 5672,
208204
admin_enable => true,

spec/acceptance/clustering_spec.rb

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
require 'spec_helper_acceptance'
44

55
describe 'rabbitmq clustering' do
6+
repos_ensure = (fact('os.family') == 'RedHat')
7+
68
context 'rabbitmq::wipe_db_on_cookie_change => false' do
79
it 'runs successfully' do
810
pp = <<-EOS
911
class { 'rabbitmq':
12+
repos_ensure => #{repos_ensure},
1013
cluster => { 'name' => 'rabbit_cluster', 'init_node' => $facts['fqdn'] },
1114
config_cluster => true,
1215
cluster_nodes => ['rabbit1', 'rabbit2'],
@@ -15,10 +18,6 @@ class { 'rabbitmq':
1518
erlang_cookie => 'TESTCOOKIE',
1619
wipe_db_on_cookie_change => false,
1720
}
18-
if $facts['os']['family'] == 'RedHat' {
19-
class { 'erlang': epel_enable => true}
20-
Class['erlang'] -> Class['rabbitmq']
21-
}
2221
EOS
2322

2423
apply_manifest(pp, expect_failures: true)
@@ -33,6 +32,7 @@ class { 'erlang': epel_enable => true}
3332
it 'runs successfully' do
3433
pp = <<-EOS
3534
class { 'rabbitmq':
35+
repos_ensure => #{repos_ensure},
3636
cluster => { 'name' => 'rabbit_cluster', 'init_node' => $facts['fqdn'] },
3737
config_cluster => true,
3838
cluster_nodes => ['rabbit1', 'rabbit2'],
@@ -41,10 +41,6 @@ class { 'rabbitmq':
4141
erlang_cookie => 'TESTCOOKIE',
4242
wipe_db_on_cookie_change => true,
4343
}
44-
if $facts['os']['family'] == 'RedHat' {
45-
class { 'erlang': epel_enable => true}
46-
Class['erlang'] -> Class['rabbitmq']
47-
}
4844
EOS
4945

5046
apply_manifest(pp, catch_failures: true)

spec/acceptance/delete_guest_user_spec.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,16 @@
33
require 'spec_helper_acceptance'
44

55
describe 'rabbitmq with delete_guest_user' do
6+
repos_ensure = (fact('os.family') == 'RedHat')
7+
68
context 'delete_guest_user' do
79
it 'runs successfully' do
810
pp = <<-EOS
911
class { 'rabbitmq':
12+
repos_ensure => #{repos_ensure},
1013
port => 5672,
1114
delete_guest_user => true,
1215
}
13-
if $facts['os']['family'] == 'RedHat' {
14-
class { 'erlang': epel_enable => true}
15-
Class['erlang'] -> Class['rabbitmq']
16-
}
1716
EOS
1817

1918
apply_manifest(pp, catch_failures: true)

spec/acceptance/parameter_spec.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
require 'spec_helper_acceptance'
44

55
describe 'rabbitmq parameter on a vhost:' do
6+
repos_ensure = (fact('os.family') == 'RedHat')
7+
68
context 'create parameter resource' do
79
it 'runs successfully' do
810
pp = <<-EOS
9-
if $facts['os']['family'] == 'RedHat' {
10-
class { 'erlang': epel_enable => true }
11-
Class['erlang'] -> Class['rabbitmq']
12-
}
1311
class { 'rabbitmq':
12+
repos_ensure => #{repos_ensure},
1413
service_manage => true,
1514
port => 5672,
1615
delete_guest_user => true,

spec/acceptance/policy_spec.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
require 'spec_helper_acceptance'
44

55
describe 'rabbitmq policy on a vhost:' do
6+
repos_ensure = (fact('os.family') == 'RedHat')
7+
68
context 'create policy resource' do
79
it 'runs successfully' do
810
pp = <<-EOS
9-
if $facts['os']['family'] == 'RedHat' {
10-
class { 'erlang': epel_enable => true }
11-
Class['erlang'] -> Class['rabbitmq']
12-
}
1311
class { 'rabbitmq':
12+
repos_ensure => #{repos_ensure},
1413
service_manage => true,
1514
port => 5672,
1615
delete_guest_user => true,

spec/acceptance/queue_spec.rb

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,13 @@
33
require 'spec_helper_acceptance'
44

55
describe 'rabbitmq binding:' do
6+
repos_ensure = (fact('os.family') == 'RedHat')
7+
68
context 'create binding and queue resources when using default management port' do
79
it 'runs successfully' do
810
pp = <<-EOS
9-
if $facts['os']['family'] == 'RedHat' {
10-
class { 'erlang': epel_enable => true }
11-
Class['erlang'] -> Class['rabbitmq']
12-
}
1311
class { 'rabbitmq':
12+
repos_ensure => #{repos_ensure},
1413
service_manage => true,
1514
port => 5672,
1615
delete_guest_user => true,
@@ -80,11 +79,8 @@ class { 'rabbitmq':
8079
context 'create multiple bindings when same source / destination / vhost but different routing keys' do
8180
it 'runs successfully' do
8281
pp = <<-EOS
83-
if $facts['os']['family'] == 'RedHat' {
84-
class { 'erlang': epel_enable => true }
85-
Class['erlang'] -> Class['rabbitmq']
86-
}
8782
class { 'rabbitmq':
83+
repos_ensure => #{repos_ensure},
8884
service_manage => true,
8985
port => 5672,
9086
delete_guest_user => true,
@@ -168,11 +164,8 @@ class { 'rabbitmq':
168164
context 'create binding and queue resources when using a non-default management port' do
169165
it 'runs successfully' do
170166
pp = <<-EOS
171-
if $facts['os']['family'] == 'RedHat' {
172-
class { 'erlang': epel_enable => true }
173-
Class['erlang'] -> Class['rabbitmq']
174-
}
175167
class { 'rabbitmq':
168+
repos_ensure => #{repos_ensure},
176169
service_manage => true,
177170
port => 5672,
178171
management_port => 11111,

0 commit comments

Comments
 (0)