Skip to content

Commit 1de26ab

Browse files
committed
Refactor opsmanager handling
This removes the trivial private classes in favor of doing it all in the main class. This also means moving all params into the main class which has the side effect that the REFERENCE.md will be much more useful when generated.
1 parent 5b10c90 commit 1de26ab

File tree

9 files changed

+112
-194
lines changed

9 files changed

+112
-194
lines changed

README.md

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ and then set the emails later.
161161

162162
Most of the interaction for the server is done via `mongodb::opsmanager`. For
163163
more options please have a look at [mongodb::opsmanager](#class-mongodbopsmanager).
164-
There are also some settings that can be configured in `mongodb::globals`.
165164

166165
## Reference
167166

@@ -185,8 +184,6 @@ There are also some settings that can be configured in `mongodb::globals`.
185184
* `mongodb::mongos::config`: Configures Mongos configuration files
186185
* `mongodb::mongos::install`: Install Mongos software packages
187186
* `mongodb::mongos::service`: Manages Mongos service
188-
* `mongodb::opsmanager::install` : Install Ops Manager software package
189-
* `mongodb::opsmanager::service` : Manages Ops Manager (mongodb-mms) service
190187

191188
#### Class: mongodb::globals
192189
*Note:* most server specific defaults should be overridden in the `mongodb::server`
@@ -654,22 +651,6 @@ Plain-text user password (will be hashed)
654651
##### `roles`
655652
Array with user roles. Default: ['dbAdmin']
656653

657-
##### `opsmanager_url`
658-
The fully qualified url where opsmanager runs. Must include the port. Ex:
659-
'http://opsmanager.yourdomain.com:8080'
660-
661-
##### `opsmanager_mongo_uri`
662-
Full URI where the Ops Manager application mongodb server(s) can be found. Default: 'mongodb://127.0.0.1:27017'
663-
664-
##### `ca_file`
665-
Ca file for secure connection to backup agents.
666-
667-
##### `pem_key_file`
668-
Pem key file containing the cert and private key used for secure connections to backup agents.
669-
670-
##### `pem_key_password`
671-
The password to the pem key file.
672-
673654
### Providers
674655

675656
#### Provider: mongodb_database

manifests/opsmanager.pp

Lines changed: 75 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,38 @@
1-
# This installs Ops Manager. See README.md for more info.
2-
1+
# This installs Ops Manager
2+
#
3+
# @param user
4+
# The user that owns the config file
5+
#
6+
# @param group
7+
# The group that owns the config file
8+
#
9+
# @param opsmanager_url
10+
# The fully qualified url where opsmanager runs. Must include the port.
11+
#
12+
# @param opsmanager_mongo_uri
13+
# Full URI where the Ops Manager application mongodb server(s) can be found.
14+
#
15+
# @param ca_file
16+
# Ca file for secure connection to backup agents.
17+
#
18+
# @param pem_key_file
19+
# Pem key file containing the cert and private key used for secure connections to backup agents.
20+
#
21+
# @param pem_key_password
22+
# The password to the pem key file.
23+
#
324
class mongodb::opsmanager (
4-
String[1] $user = $mongodb::opsmanager::params::user,
5-
String[1] $group = $mongodb::opsmanager::params::group,
6-
Enum['running', 'stopped'] $ensure = $mongodb::opsmanager::params::ensure,
7-
String[1] $package_name = $mongodb::opsmanager::params::package_name,
8-
String[1] $package_ensure = $mongodb::opsmanager::params::package_ensure,
9-
Boolean $service_enable = $mongodb::opsmanager::params::service_enable,
10-
Boolean $service_manage = $mongodb::opsmanager::params::service_manage,
11-
String[1] $service_name = $mongodb::opsmanager::params::service_name,
12-
Stdlib::Httpurl $download_url = $mongodb::opsmanager::params::download_url,
13-
String[1] $mongo_uri = $mongodb::opsmanager::params::mongo_uri,
14-
Stdlib::Httpurl $opsmanager_url = $mongodb::opsmanager::params::opsmanager_url,
25+
String[1] $user = 'mongodb-mms',
26+
String[1] $group = 'mongodb-mms',
27+
Enum['running', 'stopped'] $ensure = 'running',
28+
String[1] $package_name = 'mongodb-mms',
29+
String[1] $package_ensure = 'present',
30+
Boolean $service_enable = true,
31+
Boolean $service_manage = true,
32+
String[1] $service_name = 'mongodb-mms',
33+
Stdlib::Httpurl $download_url = 'https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.1.50101.20180801T1117Z-1.x86_64.rpm',
34+
String[1] $mongo_uri = 'mongodb://127.0.0.1:27017',
35+
Stdlib::Httpurl $opsmanager_url = "http://${facts['fqdn']}:8080",
1536
String[1] $client_certificate_mode = 'None',
1637
String[1] $from_email_addr = '[email protected]',
1738
String[1] $reply_to_email_addr = '[email protected]',
@@ -23,30 +44,59 @@
2344
Boolean $ssl = false,
2445
Boolean $ignore_ui_setup = true,
2546
#optional settings
26-
Optional[String[1]] $ca_file = $mongodb::opsmanager::params::ca_file,
27-
Optional[String[1]] $pem_key_file = $mongodb::opsmanager::params::pem_key_file,
28-
Optional[String[1]] $pem_key_password = $mongodb::opsmanager::params::pem_key_password,
47+
Optional[String[1]] $ca_file = undef,
48+
Optional[String[1]] $pem_key_file = undef,
49+
Optional[String[1]] $pem_key_password = undef,
2950
Optional[String[1]] $user_svc_class = undef, # Default: com.xgen.svc.mms.svc.user.UserSvcDb External Source: com.xgen.svc.mms.svc.user.UserSvcCrowd or Internal Database: com.xgen.svc.mms.svc.user.UserSvcDb
3051
Optional[Integer] $snapshot_interval = undef, # Default: 24
3152
Optional[Integer] $snapshot_interval_retention = undef, # Default: 2
3253
Optional[Integer] $snapshot_daily_retention = undef, # Default: 0
3354
Optional[Integer] $snapshot_weekly_retention = undef, # Default: 2
3455
Optional[Integer] $snapshot_monthly_retention = undef, # Default: 1
3556
Optional[Integer] $versions_directory = undef, # Linux default: /opt/mongodb/mms/mongodb-releases/
57+
) {
58+
59+
case $package_ensure {
60+
'absent': {
61+
$my_package_ensure = 'absent'
62+
$file_ensure = 'absent'
63+
}
64+
default: {
65+
$my_package_ensure = $package_ensure
66+
$file_ensure = 'present'
67+
}
68+
}
69+
70+
$config_file = '/opt/mongodb/mms/conf/conf-mms.properties'
3671

37-
) inherits mongodb::opsmanager::params {
72+
package { $package_name:
73+
ensure => $my_package_ensure,
74+
source => $download_url,
75+
}
76+
77+
file { $config_file:
78+
ensure => $file_ensure,
79+
owner => $user,
80+
group => $group,
81+
mode => '0640',
82+
content => epp('mongodb/opsmanager/conf-mms.properties.epp'),
83+
}
3884

39-
contain mongodb::opsmanager::install
40-
contain mongodb::opsmanager::config
41-
contain mongodb::opsmanager::service
85+
if $service_manage {
86+
service { $service_name:
87+
ensure => $ensure,
88+
enable => $service_enable,
89+
}
90+
}
4291

43-
if ($mongo_uri == 'mongodb://127.0.0.1:27017') {
92+
if $mongo_uri == 'mongodb://127.0.0.1:27017' {
4493
include mongodb::server
4594
}
4695

47-
if ($ensure == 'running') {
48-
Class['mongodb::opsmanager::install']
49-
~> Class['mongodb::opsmanager::config']
50-
~> Class['mongodb::opsmanager::service']
96+
if $ensure == 'running' {
97+
Package[$package_name] -> File[$config_file]
98+
if $service_manage {
99+
[Package[$package_name], File[$config_file]] ~> Service[$service_name]
100+
}
51101
}
52102
}

manifests/opsmanager/config.pp

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

manifests/opsmanager/install.pp

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

manifests/opsmanager/params.pp

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

manifests/opsmanager/service.pp

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

spec/classes/ops_manager_install_spec.rb

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

spec/classes/ops_manager_spec.rb

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

spec/opsmanager_spec.rb

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
require 'spec_helper'
2+
3+
describe 'mongodb::opsmanager' do
4+
on_supported_os.each do |os, facts|
5+
context "on #{os}" do
6+
let(:facts) { facts }
7+
8+
let(:params) do
9+
{
10+
opsmanager_url: 'http://localhost:8080'
11+
}
12+
end
13+
14+
describe 'with defaults' do
15+
it { is_expected.to compile.with_all_deps }
16+
17+
it { is_expected.to contain_service('mongodb') }
18+
19+
it do
20+
is_expected.to create_package('mongodb-mms').
21+
with_ensure('present')
22+
end
23+
24+
it do
25+
is_expected.to contain_file('/opt/mongodb/mms/conf/conf-mms.properties').
26+
with_ensure('file').
27+
that_requires('Package[mongodb-mms]')
28+
end
29+
30+
it do
31+
is_expected.to contain_service('mongodb-mms').
32+
that_subscribes_to(['Package[mongodb-mms]', 'File[/opt/mongodb/mms/conf/conf-mms.properties]'])
33+
end
34+
end
35+
end
36+
end
37+
end

0 commit comments

Comments
 (0)