Skip to content

Commit bc94e0d

Browse files
authored
Merge pull request #685 from traylenator/hiera
Set version defaults with hiera data
2 parents 235212d + 6537f8b commit bc94e0d

File tree

5 files changed

+134
-135
lines changed

5 files changed

+134
-135
lines changed

REFERENCE.md

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -207,31 +207,19 @@ Default value: `undef`
207207

208208
##### <a name="-mongodb--globals--version"></a>`version`
209209

210-
Data type: `Any`
211-
212-
210+
Data type: `Optional[String[1]]`
213211

214-
Default value:
212+
Version of mongodb to install
215213

216-
```puppet
217-
fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb 3.6.
218-
'buster' => '4.4.8',
219-
default => undef
220-
```
214+
Default value: `undef`
221215

222216
##### <a name="-mongodb--globals--manage_package_repo"></a>`manage_package_repo`
223217

224-
Data type: `Any`
225-
226-
218+
Data type: `Optional[Boolean]`
227219

228-
Default value:
220+
If `true` configure upstream mongodb repos
229221

230-
```puppet
231-
fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb packages. So manage it!
232-
'buster' => true,
233-
default => undef
234-
```
222+
Default value: `undef`
235223

236224
##### <a name="-mongodb--globals--manage_package"></a>`manage_package`
237225

data/Debian-10.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
---
2+
mongodb::globals::version: '4.4.8' # Debian 10 doesn't provide mongodb 3.6.
3+
mongodb::globals::manage_package_repo: true # Debian 10 doesn't provide mongodb packages. So manage it!

hiera.yaml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
version: 5
3+
defaults:
4+
datadir: 'data'
5+
data_hash: 'yaml_data'
6+
hierarchy:
7+
- name: 'Major Version'
8+
path: '%{facts.os.name}-%{facts.os.release.major}.yaml'
9+
- name: 'OS Family Major Version'
10+
path: '%{facts.os.family}-family-%{facts.os.release.major}.yaml'
11+
- name: 'OS Family'
12+
path: '%{facts.os.family}-family.yaml'
13+
- name: 'common'
14+
path: 'common.yaml'

manifests/globals.pp

Lines changed: 44 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
# @param group
1313
# @param ipv6
1414
# @param bind_ip
15-
# @param version
16-
# @param manage_package_repo
15+
# @param version Version of mongodb to install
16+
# @param manage_package_repo If `true` configure upstream mongodb repos
1717
# @param manage_package
1818
# @param repo_proxy
1919
# @param proxy_username
@@ -25,40 +25,33 @@
2525
# @param manage_pidfile
2626
#
2727
class mongodb::globals (
28-
$server_package_name = undef,
29-
$client_package_name = undef,
28+
$server_package_name = undef,
29+
$client_package_name = undef,
3030

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,
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,
3737

38-
$user = undef,
39-
$group = undef,
40-
$ipv6 = undef,
41-
$bind_ip = undef,
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,
4248

43-
$version = fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb 3.6.
44-
'buster' => '4.4.8',
45-
default => undef
46-
},
47-
$manage_package_repo = fact('os.distro.codename') ? { # Debian 10 doesn't provide mongodb packages. So manage it!
48-
'buster' => true,
49-
default => undef
50-
},
51-
$manage_package = undef,
52-
$repo_proxy = undef,
53-
$proxy_username = undef,
54-
$proxy_password = undef,
49+
$repo_location = undef,
50+
$use_enterprise_repo = undef,
5551

56-
$repo_location = undef,
57-
$use_enterprise_repo = undef,
58-
59-
$pidfilepath = undef,
60-
$pidfilemode = undef,
61-
$manage_pidfile = undef,
52+
$pidfilepath = undef,
53+
$pidfilemode = undef,
54+
$manage_pidfile = undef,
6255
) {
6356
if $use_enterprise_repo {
6457
$edition = 'enterprise'
@@ -67,34 +60,27 @@
6760
}
6861

6962
# Setup of the repo only makes sense globally, so we are doing it here.
70-
case $facts['os']['family'] {
71-
'RedHat', 'Linux', 'Suse': {
72-
# For RedHat, Linux and Suse family: if manage_package_repo is set at undef that include mongodb::repo
73-
if $manage_package_repo != false {
74-
class { 'mongodb::repo':
75-
ensure => present,
76-
version => pick($version, '3.6'),
77-
use_enterprise_repo => $use_enterprise_repo,
78-
repo_location => $repo_location,
79-
proxy => $repo_proxy,
80-
}
81-
}
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 => '3.6',
73+
default => $version,
74+
},
75+
default => $version,
8276
}
83-
default: {
84-
# For other (Debian) family: if manage_package_repo is set at undef that not include mongodb::repo
85-
if $manage_package_repo {
86-
if $use_enterprise_repo == true and $version == undef {
87-
fail('You must set mongodb::globals::version when mongodb::globals::use_enterprise_repo is true')
88-
}
8977

90-
class { 'mongodb::repo':
91-
ensure => present,
92-
version => $version,
93-
use_enterprise_repo => $use_enterprise_repo,
94-
repo_location => $repo_location,
95-
proxy => $repo_proxy,
96-
}
97-
}
78+
class { 'mongodb::repo':
79+
ensure => present,
80+
version => $_repo_version,
81+
use_enterprise_repo => $use_enterprise_repo,
82+
repo_location => $repo_location,
83+
proxy => $repo_proxy,
9884
}
9985
}
10086
}

spec/defines/db_spec.rb

Lines changed: 67 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -6,77 +6,85 @@
66
context 'default' do
77
let(:title) { 'testdb' }
88

9-
let(:params) do
10-
{ 'user' => 'testuser',
11-
'password' => 'testpass' }
12-
end
9+
on_supported_os.each do |os, os_facts|
10+
context "on #{os}" do
11+
let(:facts) do
12+
os_facts
13+
end
1314

14-
it 'contains mongodb_database with mongodb::server requirement' do
15-
is_expected.to contain_mongodb_database('testdb')
16-
end
15+
let(:params) do
16+
{ 'user' => 'testuser',
17+
'password' => 'testpass' }
18+
end
1719

18-
it 'contains mongodb_user with mongodb_database requirement' do
19-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
20-
with_username('testuser'). \
21-
with_database('testdb'). \
22-
that_requires('Mongodb_database[testdb]')
23-
end
20+
it 'contains mongodb_database with mongodb::server requirement' do
21+
is_expected.to contain_mongodb_database('testdb')
22+
end
2423

25-
it 'contains mongodb_user with proper roles' do
26-
params['roles'] = %w[testrole1 testrole2]
27-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
28-
with_roles(%w[testrole1 testrole2])
29-
end
24+
it 'contains mongodb_user with mongodb_database requirement' do
25+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
26+
with_username('testuser'). \
27+
with_database('testdb'). \
28+
that_requires('Mongodb_database[testdb]')
29+
end
3030

31-
it 'prefers password_hash instead of password' do
32-
params['password_hash'] = 'securehash'
33-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
34-
with_password_hash('securehash')
35-
end
31+
it 'contains mongodb_user with proper roles' do
32+
params['roles'] = %w[testrole1 testrole2]
33+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
34+
with_roles(%w[testrole1 testrole2])
35+
end
3636

37-
it 'contains mongodb_database with proper tries param' do
38-
params['tries'] = 5
39-
is_expected.to contain_mongodb_database('testdb').with_tries(5)
40-
end
41-
end
37+
it 'prefers password_hash instead of password' do
38+
params['password_hash'] = 'securehash'
39+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
40+
with_password_hash('securehash')
41+
end
4242

43-
context 'with a db_name value' do
44-
let(:title) { 'testdb-title' }
43+
it 'contains mongodb_database with proper tries param' do
44+
params['tries'] = 5
45+
is_expected.to contain_mongodb_database('testdb').with_tries(5)
46+
end
47+
end
4548

46-
let(:params) do
47-
{
48-
'db_name' => 'testdb',
49-
'user' => 'testuser',
50-
'password' => 'testpass'
51-
}
52-
end
49+
context 'with a db_name value' do
50+
let(:title) { 'testdb-title' }
5351

54-
it 'contains mongodb_database with mongodb::server requirement' do
55-
is_expected.to contain_mongodb_database('testdb')
56-
end
52+
let(:params) do
53+
{
54+
'db_name' => 'testdb',
55+
'user' => 'testuser',
56+
'password' => 'testpass'
57+
}
58+
end
5759

58-
it 'contains mongodb_user with mongodb_database requirement' do
59-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
60-
with_username('testuser'). \
61-
with_database('testdb'). \
62-
that_requires('Mongodb_database[testdb]')
63-
end
60+
it 'contains mongodb_database with mongodb::server requirement' do
61+
is_expected.to contain_mongodb_database('testdb')
62+
end
6463

65-
it 'contains mongodb_user with proper roles' do
66-
params['roles'] = %w[testrole1 testrole2]
67-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
68-
with_roles(%w[testrole1 testrole2])
69-
end
64+
it 'contains mongodb_user with mongodb_database requirement' do
65+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
66+
with_username('testuser'). \
67+
with_database('testdb'). \
68+
that_requires('Mongodb_database[testdb]')
69+
end
7070

71-
it 'prefers password_hash instead of password' do
72-
params['password_hash'] = 'securehash'
73-
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
74-
with_password_hash('securehash')
75-
end
71+
it 'contains mongodb_user with proper roles' do
72+
params['roles'] = %w[testrole1 testrole2]
73+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
74+
with_roles(%w[testrole1 testrole2])
75+
end
76+
77+
it 'prefers password_hash instead of password' do
78+
params['password_hash'] = 'securehash'
79+
is_expected.to contain_mongodb_user('User testuser on db testdb'). \
80+
with_password_hash('securehash')
81+
end
7682

77-
it 'contains mongodb_database with proper tries param' do
78-
params['tries'] = 5
79-
is_expected.to contain_mongodb_database('testdb').with_tries(5)
83+
it 'contains mongodb_database with proper tries param' do
84+
params['tries'] = 5
85+
is_expected.to contain_mongodb_database('testdb').with_tries(5)
86+
end
87+
end
8088
end
8189
end
8290
end

0 commit comments

Comments
 (0)