Skip to content

Commit

Permalink
Update with feedback from 10/20/18
Browse files Browse the repository at this point in the history
Use notifies, change ensure, update enums for certain variables, update tests to reflect notifies, add config class.

Rebase onto master
  • Loading branch information
claycogg committed Oct 23, 2018
1 parent 5a53ef0 commit ec36da6
Show file tree
Hide file tree
Showing 12 changed files with 128 additions and 406 deletions.
14 changes: 5 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,8 @@ The MongoDB module also manages Ops Manager setup and the mongdb-mms daemon.
* MongoDB client.
* MongoDB sharding support (mongos)
* MongoDB apt/yum repository.
* 10gen/mongodb apt/yum repository.
* Ops Manager package.
* Ops Manager configuration files.
* Ops Manager users.

### Beginning with MongoDB

Expand Down Expand Up @@ -147,7 +145,7 @@ To install Ops Manager and have it run with a local MongoDB application server d

```puppet
class {'mongodb::opsmanager':
port => 5252,
opsmanager_url => 'http://opsmanager.yourdomain.com'
mongo_uri => 'mongodb://yourmongocluster:27017,
from_email_addr => 'opsmanager@yourdomain.com',
reply_to_email_addr => 'replyto@yourdomain.com',
Expand All @@ -162,7 +160,7 @@ and then set the emails later.
## Ops Manager Usage

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

## Reference
Expand Down Expand Up @@ -656,11 +654,9 @@ Plain-text user password (will be hashed)
##### `roles`
Array with user roles. Default: ['dbAdmin']

##### `opsmanager_hostname`
Hostname where Ops Manager can be accessed. Default: $facts['networking']['fqdn']

##### `opsmanager_port`
Port where Ops Manager can be accessed. Default: 8080
##### `opsmanager_url`
The fully qualified url where opsmanager runs. Must include the port. Ex:
'http://opsmanager.yourdomain.com:8080'

##### `opsmanager_mongo_uri`
Full URI where the Ops Manager application mongodb server(s) can be found. Default: 'mongodb://127.0.0.1:27017'
Expand Down
69 changes: 30 additions & 39 deletions manifests/globals.pp
Original file line number Diff line number Diff line change
@@ -1,52 +1,43 @@
# Class for setting cross-class global overrides. See README.md for more
# details.
class mongodb::globals (
$server_package_name = undef,
$client_package_name = undef,
$mongos_package_name = undef,
$server_package_name = undef,
$client_package_name = undef,

$mongod_service_manage = undef,
$service_enable = undef,
$service_ensure = undef,
$service_name = undef,
$mongos_service_manage = undef,
$mongos_service_enable = undef,
$mongos_service_ensure = undef,
$mongos_service_status = undef,
$mongos_service_name = undef,
$opsmanager_service_manage = undef,
$opsmanager_service_enable = undef,
$opsmanager_service_ensure = undef,
$opsmanager_service_status = undef,
$opsmanager_service_name = undef,
$service_provider = undef,
$service_status = undef,
$mongod_service_manage = undef,
$service_enable = undef,
$service_ensure = undef,
$service_name = undef,
$service_provider = undef,
$service_status = undef,

$user = undef,
$group = undef,
$opsmanager_user = undef,
$opsmanager_group = undef,
$ipv6 = undef,
$bind_ip = undef,
$user = undef,
$group = undef,
$ipv6 = undef,
$bind_ip = undef,

$version = undef,
$version = undef,

$manage_package_repo = undef,
$manage_package = undef,
$repo_proxy = undef,
$proxy_username = undef,
$proxy_password = undef,
$manage_package_repo = undef,
$manage_package = undef,
$repo_proxy = undef,
$proxy_username = undef,
$proxy_password = undef,

$repo_location = undef,
$use_enterprise_repo = undef,
$repo_location = undef,
$use_enterprise_repo = undef,

$pidfilepath = undef,
$pidfilemode = undef,
$manage_pidfile = undef,
$pidfilepath = undef,
$pidfilemode = undef,
$manage_pidfile = undef,

$opsmanager_hostname = undef,
$opsmanager_port = undef,
$opsmanager_protocol = undef,
$opsmanager_user = undef,
$opsmanager_group = undef,
$opsmanager_service_manage = undef,
$opsmanager_service_enable = undef,
$opsmanager_service_ensure = undef,
$opsmanager_service_status = undef,
$opsmanager_service_name = undef,
$opsmanager_download_url = undef,
$opsmanager_mongo_uri = undef,
$opsmanager_package_name = undef,
Expand Down
59 changes: 26 additions & 33 deletions manifests/opsmanager.pp
Original file line number Diff line number Diff line change
@@ -1,20 +1,17 @@
# This installs Ops Manager. See README.md for more info.

class mongodb::opsmanager (
String[1] $user = $mongodb::params::opsmanager_user,
String[1] $group = $mongodb::params::opsmanager_group,
Enum['present','lastest','absent'] $ensure = $mongodb::params::opsmanager_ensure,
String[1] $package_name = $mongodb::params::opsmanager_package_name,
Boolean $package_ensure = $mongodb::params::opsmanager_package_ensure,
Boolean $service_enable = $mongodb::params::opsmanager_service_enable,
Boolean $service_manage = $mongodb::params::opsmanager_service_manage,
String[1] $service_name = $mongodb::params::opsmanager_service_name,
String[1] $download_url = $mongodb::params::opsmanager_download_url,
String[1] $mongo_uri = $mongodb::params::opsmanager_mongo_uri,
String[1] $hostname = $mongodb::params::opsmanager_hostname,
String[1] $protocol = $mongodb::params::opsmanager_protocol,
Stdlib::Port $port = $mongodb::params::opsmanager_port,
String[1] $opsmanager_url = $mongodb::params::opsmanager_url,
String[1] $user = $mongodb::opsmanager::params::user,
String[1] $group = $mongodb::opsmanager::params::group,
Enum['running', 'stopped'] $ensure = $mongodb::opsmanager::params::ensure,
String[1] $package_name = $mongodb::opsmanager::params::package_name,
String[1] $package_ensure = $mongodb::opsmanager::params::package_ensure,
Boolean $service_enable = $mongodb::opsmanager::params::service_enable,
Boolean $service_manage = $mongodb::opsmanager::params::service_manage,
String[1] $service_name = $mongodb::opsmanager::params::service_name,
Stdlib::Httpurl $download_url = $mongodb::opsmanager::params::download_url,
String[1] $mongo_uri = $mongodb::opsmanager::params::mongo_uri,
Stdlib::Httpurl $opsmanager_url = $mongodb::opsmanager::params::opsmanager_url,
String[1] $client_certificate_mode = 'None',
String[1] $from_email_addr = 'from@yourdomain.com',
String[1] $reply_to_email_addr = 'replyto@yourdomain.com',
Expand All @@ -26,9 +23,9 @@
Boolean $ssl = false,
Boolean $ignore_ui_setup = true,
#optional settings
Optional[String[1]] $ca_file = $mongodb::params::ca_file,
Optional[String[1]] $pem_key_file = $mongodb::params::pem_key_file,
Optional[String[1]] $pem_key_password = $mongodb::params::pem_key_password,
Optional[String[1]] $ca_file = $mongodb::opsmanager::params::ca_file,
Optional[String[1]] $pem_key_file = $mongodb::opsmanager::params::pem_key_file,
Optional[String[1]] $pem_key_password = $mongodb::opsmanager::params::pem_key_password,
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
Optional[Integer] $snapshot_interval = undef, # Default: 24
Optional[Integer] $snapshot_interval_retention = undef, # Default: 2
Expand All @@ -37,23 +34,19 @@
Optional[Integer] $snapshot_monthly_retention = undef, # Default: 1
Optional[Integer] $versions_directory = undef, # Linux default: /opt/mongodb/mms/mongodb-releases/

) inherits mongodb::params {
) inherits mongodb::opsmanager::params {

contain mongodb::opsmanager::install
contain mongodb::opsmanager::service
contain mongodb::opsmanager::install
contain mongodb::opsmanager::config
contain mongodb::opsmanager::service

if ($mongo_uri == 'mongodb://127.0.0.1:27017') {
include mongodb::server
}
if ($mongo_uri == 'mongodb://127.0.0.1:27017') {
include mongodb::server
}

if ($ensure == 'present') {
Class['mongodb::opsmanager::install'] -> Class['mongodb::opsmanager::service']
-> file { '/opt/mongodb/mms/conf/conf-mms.properties':
ensure => file,
owner => $user,
group => $group,
mode => '0644',
content => epp('mongodb/opsmanager/conf-mms.properties.epp'),
}
}
if ($ensure == 'running') {
Class['mongodb::opsmanager::install']
~> Class['mongodb::opsmanager::config']
~> Class['mongodb::opsmanager::service']
}
}
14 changes: 14 additions & 0 deletions manifests/opsmanager/config.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

# PRIVATE CLASS: do not call directly
class mongodb::opsmanager::config {
$user = $mongodb::opsmanager::user
$group = $mongodb::opsmanager::group

file { '/opt/mongodb/mms/conf/conf-mms.properties':
ensure => file,
owner => $user,
group => $group,
mode => '0644',
content => epp('mongodb/opsmanager/conf-mms.properties.epp'),
}
}
34 changes: 13 additions & 21 deletions manifests/opsmanager/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -4,42 +4,34 @@
$package_ensure = $mongodb::opsmanager::package_ensure
$package_name = $mongodb::opsmanager::package_name
$download_url = $mongodb::opsmanager::download_url
$my_provider = undef

case $package_ensure {
true: {
$my_package_ensure = 'present'
$file_ensure = 'directory'
}
false: {
$my_package_ensure = 'absent'
$file_ensure = 'absent'
}
'absent': {
$my_package_ensure = 'absent'
$file_ensure = 'absent'
}
'purged': {
$my_package_ensure = 'purged'
$file_ensure = 'absent'
}
default: {
$my_package_ensure = $package_ensure
$file_ensure = 'present'
}
}

case $facts['os']['family'] {
'RedHat': {
$my_provider = 'rpm'
}
default: {
warning("The ${module_name} module might not work on ${facts['os']['family']}. Sensible defaults will be attempted.")
$my_provider = undef
if versioncmp(fact('puppetversion'),'5.4.0') < 0 {
case $facts['os']['family'] {
'RedHat': {
$my_provider = 'rpm'
}
'Debian': {
$my_provider = 'dpkg'
}
default: {
warning("The ${module_name} module might not work on ${facts['os']['family']}. Sensible defaults will be attempted.")
$my_provider = undef
}
}
}

Package { provider => $my_provider }

package { $package_name:
ensure => $my_package_ensure,
source => $download_url,
Expand Down
19 changes: 19 additions & 0 deletions manifests/opsmanager/params.pp
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# PRIVATE CLASS: do not use directly
class mongodb::opsmanager::params inherits mongodb::globals {
$ensure = 'running'
$user = pick($mongodb::globals::opsmanager_user, 'mongodb-mms')
$group = pick($mongodb::globals::opsmanager_group, 'mongodb-mms')
$package_name = pick($mongodb::globals::opsmanager_package_name, 'mongodb-mms')
$service_name = pick($mongodb::globals::opsmanager_service_name, 'mongodb-mms')
$service_manage = pick($mongodb::globals::opsmanager_service_manage, true)
$service_enable = pick($mongodb::globals::opsmanager_service_enable, true)
$service_ensure = pick($mongodb::globals::opsmanager_service_ensure, 'running')
$service_status = $mongodb::globals::opsmanager_service_status
$opsmanager_url = $mongodb::globals::opsmanager_url
$download_url = pick($mongodb::globals::opsmanager_download_url, 'https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.1.50101.20180801T1117Z-1.x86_64.rpm')
$mongo_uri = pick($mongodb::globals::opsmanager_mongo_uri, 'mongodb://127.0.0.1:27017')
$package_ensure = 'present'
$ca_file = $mongodb::globals::ca_file
$pem_key_file = $mongodb::globals::pem_key_file
$pem_key_password = $mongodb::globals::pem_key_password
}
18 changes: 5 additions & 13 deletions manifests/opsmanager/service.pp
Original file line number Diff line number Diff line change
@@ -1,27 +1,19 @@
# PRIVATE CLASS: do not call directly
class mongodb::opsmanager::service {
#assert_private("You are calling a private class mongodb::opsmanager::service.")
$ensure = $mongodb::opsmanager::service_ensure
$service_ensure = $mongodb::opsmanager::ensure
$service_manage = $mongodb::opsmanager::service_manage
$service_enable = $mongodb::opsmanager::service_enable
$service_name = $mongodb::opsmanager::service_name
$service_provider = $mongodb::opsmanager::service_provider
$service_status = $mongodb::opsmanager::service_status

$service_ensure = $ensure ? {
'absent' => false,
'purged' => false,
'stopped' => false,
default => true
}

if $service_manage {
service { $service_name:
ensure => $service_ensure,
enable => $service_enable,
provider => $service_provider,
hasstatus => true,
status => $service_status,
ensure => $service_ensure,
enable => $service_enable,
provider => $service_provider,
status => $service_status,
}
}
}
36 changes: 5 additions & 31 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -21,39 +21,13 @@
$rcfile = "${::root_home}/.mongorc.js"
$dbpath_fix = false

$mongos_service_manage = pick($mongodb::globals::mongos_service_manage, true)
$mongos_service_enable = pick($mongodb::globals::mongos_service_enable, true)
$mongos_service_ensure = pick($mongodb::globals::mongos_service_ensure, 'running')
$mongos_service_status = $mongodb::globals::mongos_service_status
$mongos_configdb = '127.0.0.1:27019'
$mongos_restart = true
$manage_package = pick($mongodb::globals::manage_package, $mongodb::globals::manage_package_repo, false)
$pidfilemode = pick($mongodb::globals::pidfilemode, '0644')
$manage_pidfile = pick($mongodb::globals::manage_pidfile, true)

$opsmanager_user = pick($mongodb::globals::opsmanager_user, 'mongodb-mms')
$opsmanager_group = pick($mongodb::globals::opsmanager_group, 'mongodb-mms')
$opsmanager_package_name = pick($mongodb::globals::opsmanager_package_name, 'mongodb-mms')
$opsmanager_service_name = pick($mongodb::globals::opsmanager_service_name, 'mongodb-mms')
$opsmanager_service_manage = pick($mongodb::globals::opsmanager_service_manage, true)
$opsmanager_service_enable = pick($mongodb::globals::opsmanager_service_enable, true)
$opsmanager_service_ensure = pick($mongodb::globals::opsmanager_service_ensure, 'running')
$opsmanager_service_status = $mongodb::globals::opsmanager_service_status
$opsmanager_hostname = pick($mongodb::globals::opsmanager_hostname, $facts['networking']['fqdn'])
$opsmanager_protocol = pick($mongodb::globals::opsmanager_protocol, 'http://')
$opsmanager_port = pick($mongodb::globals::opsmanager_port, 8080)
$opsmanager_url = pick($mongodb::globals::opsmanager_url, "${opsmanager_protocol}${opsmanager_hostname}:${opsmanager_port}")
$opsmanager_download_url = pick($mongodb::globals::opsmanager_download_url, 'https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.1.50101.20180801T1117Z-1.x86_64.rpm')
$opsmanager_mongo_uri = pick($mongodb::globals::opsmanager_mongo_uri, 'mongodb://127.0.0.1:27017')
$opsmanager_package_ensure = true
$ca_file = $mongodb::globals::ca_file
$pem_key_file = $mongodb::globals::pem_key_file
$pem_key_password = $mongodb::globals::pem_key_password
$version = $mongodb::globals::version

$manage_package = pick($mongodb::globals::manage_package, $mongodb::globals::manage_package_repo, false)
$pidfilemode = pick($mongodb::globals::pidfilemode, '0644')
$manage_pidfile = pick($mongodb::globals::manage_pidfile, true)

$version = $mongodb::globals::version

$config_data = undef
$config_data = undef

if $version {
$package_ensure = $version
Expand Down
2 changes: 1 addition & 1 deletion spec/classes/ops_manager_install_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
let(:facts) { facts }

describe 'it should create package' do
let(:pre_condition) { ["class mongodb::opsmanager { $download_url = 'https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.1.50101.20180801T1117Z-1.x86_64.rpm' $package_ensure = true $user = 'mongodb' $group = 'mongodb' $package_name = 'mongodb-mms' }", 'include mongodb::opsmanager'] }
let(:pre_condition) { ["class mongodb::opsmanager { $download_url = 'https://downloads.mongodb.com/on-prem-mms/rpm/mongodb-mms-4.0.1.50101.20180801T1117Z-1.x86_64.rpm' $package_ensure = 'present' $user = 'mongodb' $group = 'mongodb' $package_name = 'mongodb-mms' }", 'include mongodb::opsmanager'] }

it {
is_expected.to contain_package('mongodb-mms').with(ensure: 'present',
Expand Down
Loading

0 comments on commit ec36da6

Please sign in to comment.