Skip to content

Commit 2951764

Browse files
committed
Use mongodb repo by default
- add repo_version parameter - default to repo version 5.0 - require repo version >= 4.4
1 parent 5ece1ea commit 2951764

File tree

11 files changed

+85
-170
lines changed

11 files changed

+85
-170
lines changed

REFERENCE.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ The following parameters are available in the `mongodb::globals` class:
9898
* [`ipv6`](#-mongodb--globals--ipv6)
9999
* [`bind_ip`](#-mongodb--globals--bind_ip)
100100
* [`version`](#-mongodb--globals--version)
101+
* [`repo_version`](#-mongodb--globals--repo_version)
101102
* [`manage_package_repo`](#-mongodb--globals--manage_package_repo)
102103
* [`manage_package`](#-mongodb--globals--manage_package)
103104
* [`repo_proxy`](#-mongodb--globals--repo_proxy)
@@ -213,13 +214,21 @@ Version of mongodb to install
213214

214215
Default value: `undef`
215216

217+
##### <a name="-mongodb--globals--repo_version"></a>`repo_version`
218+
219+
Data type: `String[1]`
220+
221+
Version of mongodb repo to install
222+
223+
Default value: `'5.0'`
224+
216225
##### <a name="-mongodb--globals--manage_package_repo"></a>`manage_package_repo`
217226

218-
Data type: `Optional[Boolean]`
227+
Data type: `Boolean`
219228

220229
If `true` configure upstream mongodb repos
221230

222-
Default value: `undef`
231+
Default value: `true`
223232

224233
##### <a name="-mongodb--globals--manage_package"></a>`manage_package`
225234

data/Debian-10.yaml

Lines changed: 0 additions & 3 deletions
This file was deleted.

manifests/globals.pp

Lines changed: 27 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# @param ipv6
1414
# @param bind_ip
1515
# @param version Version of mongodb to install
16+
# @param repo_version Version of mongodb repo to install
1617
# @param manage_package_repo If `true` configure upstream mongodb repos
1718
# @param manage_package
1819
# @param repo_proxy
@@ -25,33 +26,34 @@
2526
# @param manage_pidfile
2627
#
2728
class mongodb::globals (
28-
$server_package_name = undef,
29-
$client_package_name = undef,
29+
$server_package_name = undef,
30+
$client_package_name = undef,
3031

31-
$mongod_service_manage = undef,
32-
$service_enable = undef,
33-
$service_ensure = undef,
34-
$service_name = undef,
35-
$service_provider = undef,
36-
$service_status = undef,
32+
$mongod_service_manage = undef,
33+
$service_enable = undef,
34+
$service_ensure = undef,
35+
$service_name = undef,
36+
$service_provider = undef,
37+
$service_status = undef,
3738

38-
$user = undef,
39-
$group = undef,
40-
$ipv6 = undef,
41-
$bind_ip = undef,
42-
Optional[String[1]] $version = undef,
43-
Optional[Boolean] $manage_package_repo = undef,
44-
$manage_package = undef,
45-
$repo_proxy = undef,
46-
$proxy_username = undef,
47-
$proxy_password = undef,
39+
$user = undef,
40+
$group = undef,
41+
$ipv6 = undef,
42+
$bind_ip = undef,
43+
Optional[String[1]] $version = undef,
44+
String[1] $repo_version = '5.0',
45+
Boolean $manage_package_repo = true,
46+
$manage_package = undef,
47+
$repo_proxy = undef,
48+
$proxy_username = undef,
49+
$proxy_password = undef,
4850

49-
$repo_location = undef,
50-
$use_enterprise_repo = undef,
51+
$repo_location = undef,
52+
$use_enterprise_repo = undef,
5153

52-
$pidfilepath = undef,
53-
$pidfilemode = undef,
54-
$manage_pidfile = undef,
54+
$pidfilepath = undef,
55+
$pidfilemode = undef,
56+
$manage_pidfile = undef,
5557
) {
5658
if $use_enterprise_repo {
5759
$edition = 'enterprise'
@@ -60,24 +62,10 @@
6062
}
6163

6264
# Setup of the repo only makes sense globally, so we are doing it here.
63-
if $manage_package_repo or $manage_package_repo == undef and $facts['os']['family'] in ['RedHat','Linux','Suse'] {
64-
if $use_enterprise_repo == true and $version == undef {
65-
fail('You must set mongodb::globals::version when mongodb::globals::use_enterprise_repo is true')
66-
}
67-
68-
# Set some default working repositories per OS if no version
69-
# specified.
70-
$_repo_version = $version ? {
71-
Undef => $facts['os']['family'] in ['RedHat', 'Linux', 'Suse'] ? {
72-
true => '4.4',
73-
default => $version,
74-
},
75-
default => $version,
76-
}
77-
65+
if $manage_package_repo {
7866
class { 'mongodb::repo':
7967
ensure => present,
80-
version => $_repo_version,
68+
version => $repo_version,
8169
use_enterprise_repo => $use_enterprise_repo,
8270
repo_location => $repo_location,
8371
proxy => $repo_proxy,

manifests/repo.pp

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,36 @@
1515
# @param aptkey_options
1616
#
1717
class mongodb::repo (
18-
Variant[Enum['present', 'absent'], Boolean] $ensure = 'present',
19-
Optional[String] $version = undef,
20-
Boolean $use_enterprise_repo = false,
21-
Optional[String] $repo_location = undef,
22-
Optional[String] $proxy = undef,
23-
Optional[String] $proxy_username = undef,
24-
Optional[String] $proxy_password = undef,
25-
Optional[String[1]] $aptkey_options = undef,
18+
Enum['present', 'absent'] $ensure = 'present',
19+
Optional[String] $version = undef,
20+
Boolean $use_enterprise_repo = false,
21+
Optional[String] $repo_location = undef,
22+
Optional[String] $proxy = undef,
23+
Optional[String] $proxy_username = undef,
24+
Optional[String] $proxy_password = undef,
25+
Optional[String[1]] $aptkey_options = undef,
2626
) {
27+
if $version == undef and $repo_location == undef {
28+
fail('`version` or `repo_location` is required')
29+
}
30+
if $version != undef and $repo_location != undef {
31+
fail('`version` is not supported with `repo_location`')
32+
}
33+
if $version != undef and versioncmp($version, '4.4') < 0 {
34+
fail('Package repositories for versions older than 4.4 are unsupported')
35+
}
36+
2737
case $facts['os']['family'] {
2838
'RedHat', 'Linux': {
2939
if $repo_location != undef {
3040
$location = $repo_location
3141
$description = 'MongoDB Custom Repository'
32-
} elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
33-
fail('Package repositories for versions older than 3.0 are unsupported')
3442
} else {
35-
$mongover = split($version, '[.]')
3643
if $use_enterprise_repo {
37-
$location = "https://repo.mongodb.com/yum/redhat/\$releasever/mongodb-enterprise/${mongover[0]}.${mongover[1]}/\$basearch/"
44+
$location = "https://repo.mongodb.com/yum/redhat/\$releasever/mongodb-enterprise/${version}/\$basearch/"
3845
$description = 'MongoDB Enterprise Repository'
3946
} else {
40-
$location = "https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${mongover[0]}.${mongover[1]}/\$basearch/"
47+
$location = "https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${version}/\$basearch/"
4148
$description = 'MongoDB Repository'
4249
}
4350
}
@@ -49,11 +56,8 @@
4956
if $repo_location {
5057
$location = $repo_location
5158
$description = 'MongoDB Custom Repository'
52-
} elsif $version == undef or versioncmp($version, '3.2.0') < 0 {
53-
fail('Package repositories for versions older than 3.2 are unsupported')
5459
} else {
55-
$mongover = split($version, '[.]')
56-
$location = "https://repo.mongodb.org/zypper/suse/\$releasever_major/mongodb-org/${mongover[0]}.${mongover[1]}/\$basearch/"
60+
$location = "https://repo.mongodb.org/zypper/suse/\$releasever_major/mongodb-org/${version}/\$basearch/"
5761
$description = 'MongoDB Repository'
5862
}
5963

@@ -63,8 +67,6 @@
6367
'Debian': {
6468
if $repo_location != undef {
6569
$location = $repo_location
66-
} elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
67-
fail('Package repositories for versions older than 3.0 are unsupported')
6870
} else {
6971
if $use_enterprise_repo == true {
7072
$repo_domain = 'repo.mongodb.com'
@@ -74,27 +76,21 @@
7476
$repo_path = 'mongodb-org'
7577
}
7678

77-
$mongover = split($version, '[.]')
7879
$location = $facts['os']['name'] ? {
7980
'Debian' => "https://${repo_domain}/apt/debian",
8081
'Ubuntu' => "https://${repo_domain}/apt/ubuntu",
8182
default => undef
8283
}
83-
$release = "${facts['os']['distro']['codename']}/${repo_path}/${mongover[0]}.${mongover[1]}"
84+
$release = "${facts['os']['distro']['codename']}/${repo_path}/${version}"
8485
$repos = $facts['os']['name'] ? {
8586
'Debian' => 'main',
8687
'Ubuntu' => 'multiverse',
8788
default => undef
8889
}
89-
$key = "${mongover[0]}.${mongover[1]}" ? {
90+
$key = $version ? {
9091
'5.0' => 'F5679A222C647C87527C2F8CB00A0BD1E2C63C11',
9192
'4.4' => '20691EEC35216C63CAF66CE1656408E390CFB1F5',
92-
'4.2' => 'E162F504A20CDF15827F718D4B7C549A058F8B6B',
93-
'4.0' => '9DA31620334BD75D9DCB49F368818C72E52529D4',
94-
'3.6' => '2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5',
95-
'3.4' => '0C49F3730359A14518585931BC711F9BA15703C6',
96-
'3.2' => '42F3E95A2C4F08279C4960ADD68FA50FEA312927',
97-
default => '492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10'
93+
default => '20691EEC35216C63CAF66CE1656408E390CFB1F5'
9894
}
9995
$key_server = 'hkp://keyserver.ubuntu.com:80'
10096
}
@@ -103,7 +99,7 @@
10399
}
104100

105101
default: {
106-
if($ensure == 'present' or $ensure == true) {
102+
if($ensure == 'present') {
107103
fail("Unsupported managed repository for osfamily: ${facts['os']['family']}, operatingsystem: ${facts['os']['name']}, module ${module_name} currently only supports managing repos for osfamily RedHat, Suse, Debian and Ubuntu")
108104
}
109105
}

spec/acceptance/mongos_spec.rb

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,7 @@
33
require 'spec_helper_acceptance'
44

55
describe 'mongodb::mongos class' do
6-
package_name = case fact('osfamily')
7-
when 'Debian'
8-
if fact('os.distro.codename') =~ %r{^(buster|bullseye)$}
9-
'mongodb-org-server'
10-
else
11-
'mongodb-server'
12-
end
13-
else
14-
'mongodb-org-server'
15-
end
6+
package_name = 'mongodb-org-server'
167
config_file = '/etc/mongos.conf'
178

189
describe 'installation' do

spec/acceptance/server_spec.rb

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,9 @@
33
require 'spec_helper_acceptance'
44

55
describe 'mongodb::server class' do
6-
case fact('osfamily')
7-
when 'Debian'
8-
config_file = if fact('os.distro.codename') =~ %r{^(buster)$}
9-
'/etc/mongod.conf'
10-
else
11-
'/etc/mongodb.conf'
12-
end
13-
service_name = if fact('os.distro.codename') =~ %r{^(buster)$}
14-
'mongod'
15-
else
16-
'mongodb'
17-
end
18-
package_name = if fact('os.distro.codename') =~ %r{^(buster)$}
19-
'mongodb-org-server'
20-
else
21-
'mongodb-server'
22-
end
23-
else
24-
config_file = '/etc/mongod.conf'
25-
service_name = 'mongod'
26-
package_name = 'mongodb-org-server'
27-
end
6+
config_file = '/etc/mongod.conf'
7+
service_name = 'mongod'
8+
package_name = 'mongodb-org-server'
289

2910
describe 'installation' do
3011
it 'works with no errors' do

spec/classes/client_spec.rb

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,16 @@
99

1010
context 'with defaults' do
1111
it { is_expected.to compile.with_all_deps }
12-
13-
if facts[:os]['release']['major'] =~ %r{(10)}
14-
it { is_expected.to create_package('mongodb_client').with_ensure('4.4.29') }
15-
else
16-
it { is_expected.to create_package('mongodb_client').with_ensure('present') }
17-
end
12+
it { is_expected.to create_package('mongodb_client').with_ensure('present').with_name('mongodb-org-shell').with_tag('mongodb_package') }
1813
end
1914

20-
context 'with manage_package' do
15+
context 'with manage_package_repo set to false' do
2116
let(:pre_condition) do
22-
"class { 'mongodb::globals': manage_package => true }"
17+
"class { 'mongodb::globals': manage_package_repo => false }"
2318
end
2419

2520
it { is_expected.to compile.with_all_deps }
26-
27-
if facts[:os]['release']['major'] =~ %r{(10)}
28-
it { is_expected.to create_package('mongodb_client').with_ensure('4.4.29').with_name('mongodb-org-shell').with_tag('mongodb_package') }
29-
else
30-
it { is_expected.to create_package('mongodb_client').with_ensure('present').with_name('mongodb-org-shell').with_tag('mongodb_package') }
31-
end
21+
it { is_expected.to create_package('mongodb_client').with_ensure('present') }
3222
end
3323
end
3424
end

spec/classes/globals_spec.rb

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@
77
context "on #{os}" do
88
let(:facts) { facts }
99

10-
if facts[:os]['family'] == 'Debian' && facts[:os]['release']['major'] != '10'
11-
it { is_expected.not_to contain_class('mongodb::repo') }
12-
else
13-
it { is_expected.to contain_class('mongodb::repo') }
14-
end
10+
it { is_expected.to contain_class('mongodb::repo') }
1511

1612
context 'with manage_package_repo at false' do
1713
let(:params) do

spec/classes/mongos_spec.rb

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,16 @@
77
context "on #{os}" do
88
let(:facts) { facts }
99

10-
package_name = case facts[:os]['family']
11-
when 'Debian'
12-
if facts[:os]['release']['major'] =~ %r{(10)}
13-
'mongodb-org-mongos'
14-
else
15-
'mongodb-server'
16-
end
17-
else
18-
'mongodb-org-mongos'
19-
end
20-
config_file = '/etc/mongos.conf'
10+
package_name = 'mongodb-org-mongos'
11+
config_file = '/etc/mongos.conf'
2112

2213
context 'with defaults' do
2314
it { is_expected.to compile.with_all_deps }
2415

2516
# install
2617
it { is_expected.to contain_class('mongodb::mongos::install') }
2718

28-
if facts[:os]['release']['major'] =~ %r{(10)}
29-
it { is_expected.to contain_package('mongodb_mongos').with_ensure('4.4.29').with_name(package_name).with_tag('mongodb_package') }
30-
else
31-
it { is_expected.to contain_package('mongodb_mongos').with_ensure('present').with_name(package_name).with_tag('mongodb_package') }
32-
end
19+
it { is_expected.to contain_package('mongodb_mongos').with_ensure('present').with_name(package_name).with_tag('mongodb_package') }
3320

3421
# config
3522
it { is_expected.to contain_class('mongodb::mongos::config') }
@@ -66,12 +53,7 @@
6653
end
6754

6855
it { is_expected.to compile.with_all_deps }
69-
70-
if facts[:os]['release']['major'] =~ %r{(10)}
71-
it { is_expected.to contain_package('mongodb_mongos').with_name('mongo-foo').with_ensure('4.4.29').with_tag('mongodb_package') }
72-
else
73-
it { is_expected.to contain_package('mongodb_mongos').with_name('mongo-foo').with_ensure('present').with_tag('mongodb_package') }
74-
end
56+
it { is_expected.to contain_package('mongodb_mongos').with_name('mongo-foo').with_ensure('present').with_tag('mongodb_package') }
7557
end
7658

7759
context 'service_manage => false' do

0 commit comments

Comments
 (0)