Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .sync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@ appveyor.yml:
delete: true
spec/spec_helper.rb:
mock_with: :rspec
spec_overrides: "require 'spec_helper_local'"
19 changes: 9 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
## Overview

Installs MongoDB on RHEL/Ubuntu/Debian from OS repo, or alternatively from
10gen repository [installation documentation](http://www.mongodb.org/display/DOCS/Ubuntu+and+Debian+packages).
MongoDB community/enterprise repositories.

## Module Description

Expand All @@ -38,7 +38,7 @@ instance, without sharding functionality.
* MongoDB service.
* MongoDB client.
* MongoDB sharding support (mongos)
* 10gen/mongodb apt/yum repository.
* MongoDB apt/yum repository.

### Beginning with MongoDB

Expand Down Expand Up @@ -71,20 +71,19 @@ class {'mongodb::mongos' :
}
```

Although most distros come with a prepacked MongoDB server we recommend to
use the 10gen/MongoDB software repository, because most of the current OS
packages are outdated and not appropriate for a production environment.
To install MongoDB from 10gen repository:
Although most distros come with a prepacked MongoDB server, you may prefer to
use a more recent version. To install MongoDB from the community repository:

```puppet
class {'mongodb::globals':
manage_package_repo => true,
version => '3.6',
}
-> class {'mongodb::client': }
-> class {'mongodb::server': }
```

If you don't want to use the 10gen/MongoDB software repository or the OS packages,
If you don't want to use the MongoDB software repository or the OS packages,
you can point the module to a custom one.
To install MongoDB from a custom repository:

Expand Down Expand Up @@ -147,9 +146,9 @@ Unsafe plain text password could be used with 'password' parameter instead of 'p
* `mongodb::mongos`: Installs and configure Mongos server (for sharding support)

#### Private classes
* `mongodb::repo`: Manage 10gen/MongoDB software repository
* `mongodb::repo::apt`: Manage Debian/Ubuntu apt 10gen/MongoDB repository
* `mongodb::repo::yum`: Manage Redhat/CentOS apt 10gen/MongoDB repository
* `mongodb::repo`: Manage MongoDB software repository
* `mongodb::repo::apt`: Manage Debian/Ubuntu apt MongoDB repository
* `mongodb::repo::yum`: Manage Redhat/CentOS yum MongoDB repository
* `mongodb::server::config`: Configures MongoDB configuration files
* `mongodb::server::install`: Install MongoDB software packages
* `mongodb::server::service`: Manages service
Expand Down
73 changes: 25 additions & 48 deletions manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,11 @@
$restart = true
$create_admin = false
$admin_username = 'admin'
$admin_roles = ['userAdmin', 'readWrite', 'dbAdmin', 'dbAdminAnyDatabase', 'readAnyDatabase',
'readWriteAnyDatabase', 'userAdminAnyDatabase', 'clusterAdmin', 'clusterManager', 'clusterMonitor',
'hostManager', 'root', 'restore']
$admin_roles = [
'userAdmin', 'readWrite', 'dbAdmin', 'dbAdminAnyDatabase', 'readAnyDatabase',
'readWriteAnyDatabase', 'userAdminAnyDatabase', 'clusterAdmin',
'clusterManager', 'clusterMonitor', 'hostManager', 'root', 'restore',
]
$handle_creds = true
$store_creds = false
$rcfile = "${::root_home}/.mongorc.js"
Expand Down Expand Up @@ -40,30 +42,20 @@
if $manage_package {
$user = pick($mongodb::globals::user, 'mongod')
$group = pick($mongodb::globals::group, 'mongod')
if ($version == undef) {
if $version == undef {
$server_package_name = pick($mongodb::globals::server_package_name, 'mongodb-org-server')
$client_package_name = pick($mongodb::globals::client_package_name, 'mongodb-org-shell')
$mongos_package_name = pick($mongodb::globals::mongos_package_name, 'mongodb-org-mongos')
$package_ensure = true
$package_ensure_client = true
$package_ensure_mongos = true
} else {
# check if the version is greater than 2.6
if $version and (versioncmp($version, '2.6.0') >= 0) {
$server_package_name = pick($mongodb::globals::server_package_name, 'mongodb-org-server')
$client_package_name = pick($mongodb::globals::client_package_name, 'mongodb-org-shell')
$mongos_package_name = pick($mongodb::globals::mongos_package_name, 'mongodb-org-mongos')
$package_ensure = $version
$package_ensure_client = $version
$package_ensure_mongos = $version
} else {
$server_package_name = pick($mongodb::globals::server_package_name, 'mongodb-10gen')
$client_package_name = pick($mongodb::globals::client_package_name, 'mongodb-10gen')
$mongos_package_name = pick($mongodb::globals::mongos_package_name, 'mongodb-10gen')
$package_ensure = $version
$package_ensure_client = $version #this is still needed in case they are only installing the client
$package_ensure_mongos = $version
}
$server_package_name = pick($mongodb::globals::server_package_name, 'mongodb-org-server')
$client_package_name = pick($mongodb::globals::client_package_name, 'mongodb-org-shell')
$mongos_package_name = pick($mongodb::globals::mongos_package_name, 'mongodb-org-mongos')
$package_ensure = $version
$package_ensure_client = $version
$package_ensure_mongos = $version
}
$service_name = pick($mongodb::globals::service_name, 'mongod')
$mongos_service_name = pick($mongodb::globals::mongos_service_name, 'mongos')
Expand All @@ -80,7 +72,7 @@
} else {
# RedHat/CentOS doesn't come with a prepacked mongodb
# so we assume that you are using EPEL repository.
if ($version == undef) {
if $version == undef {
$package_ensure = true
$package_ensure_client = true
$package_ensure_mongos = true
Expand Down Expand Up @@ -113,10 +105,10 @@
if $manage_package {
$user = pick($mongodb::globals::user, 'mongodb')
$group = pick($mongodb::globals::group, 'mongodb')
if $mongodb::globals::use_enterprise_repo == true {
$edition = 'enterprise'
if $mongodb::globals::use_enterprise_repo {
$edition = 'enterprise'
} else {
$edition = 'org'
$edition = 'org'
}
if ($version == undef) {
$server_package_name = pick($mongodb::globals::server_package_name, "mongodb-${edition}-server")
Expand All @@ -128,25 +120,14 @@
$service_name = pick($mongodb::globals::service_name, 'mongod')
$config = '/etc/mongod.conf'
} else {
# check if the version is greater than 2.6
if $version and (versioncmp($version, '2.6.0') >= 0) {
$server_package_name = pick($mongodb::globals::server_package_name, "mongodb-${edition}-server")
$client_package_name = pick($mongodb::globals::client_package_name, "mongodb-${edition}-shell")
$mongos_package_name = pick($mongodb::globals::mongos_package_name, "mongodb-${edition}-mongos")
$package_ensure = $version
$package_ensure_client = $version
$package_ensure_mongos = $version
$service_name = pick($mongodb::globals::service_name, 'mongod')
$config = '/etc/mongod.conf'
} else {
$server_package_name = pick($mongodb::globals::server_package_name, 'mongodb-10gen')
$client_package_name = pick($mongodb::globals::client_package_name, 'mongodb-10gen')
$mongos_package_name = pick($mongodb::globals::mongos_package_name, 'mongodb-10gen')
$package_ensure = $version
$package_ensure_client = $version #this is still needed in case they are only installing the client
$service_name = pick($mongodb::globals::service_name, 'mongodb')
$config = '/etc/mongodb.conf'
}
$server_package_name = pick($mongodb::globals::server_package_name, "mongodb-${edition}-server")
$client_package_name = pick($mongodb::globals::client_package_name, "mongodb-${edition}-shell")
$mongos_package_name = pick($mongodb::globals::mongos_package_name, "mongodb-${edition}-mongos")
$package_ensure = $version
$package_ensure_client = $version
$package_ensure_mongos = $version
$service_name = pick($mongodb::globals::service_name, 'mongod')
$config = '/etc/mongod.conf'
}
$mongos_service_name = pick($mongodb::globals::mongos_service_name, 'mongos')
$mongos_config = '/etc/mongodb-shard.conf'
Expand All @@ -155,11 +136,7 @@
$pidfilepath = pick($mongodb::globals::pidfilepath, '/var/run/mongod.pid')
$bind_ip = pick($mongodb::globals::bind_ip, ['127.0.0.1'])
} else {
# although we are living in a free world,
# I would not recommend to use the prepacked
# mongodb server on Ubuntu 12.04 or Debian 6/7,
# because its really outdated
if ($version == undef) {
if $version == undef {
$package_ensure = true
$package_ensure_client = true
$package_ensure_mongos = true
Expand Down
71 changes: 26 additions & 45 deletions manifests/repo.pp
Original file line number Diff line number Diff line change
Expand Up @@ -3,54 +3,44 @@
Variant[Enum['present', 'absent'], Boolean] $ensure = 'present',
Optional[String] $version = undef,
Boolean $use_enterprise_repo = false,
$repo_location = undef,
$proxy = undef,
$proxy_username = undef,
$proxy_password = undef,
Optional[String] $repo_location = undef,
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

datatypes \o/

Optional[String] $proxy = undef,
Optional[String] $proxy_username = undef,
Optional[String] $proxy_password = undef,
) {
case $::osfamily {
'RedHat', 'Linux': {
if $version != undef {
$mongover = split($version, '[.]')
}
if ($repo_location != undef){
if $repo_location != undef {
$location = $repo_location
$description = 'MongoDB Custom Repository'
} elsif $use_enterprise_repo == true {
$location = "https://repo.mongodb.com/yum/redhat/\$releasever/mongodb-enterprise/${mongover[0]}.${mongover[1]}/\$basearch/"
$description = 'MongoDB Enterprise Repository'
}
elsif $version and (versioncmp($version, '3.0.0') >= 0) {
$location = $::architecture ? {
'x86_64' => "http://repo.mongodb.org/yum/redhat/${::operatingsystemmajrelease}/mongodb-org/${mongover[0]}.${mongover[1]}/x86_64/",
default => undef
}
$description = 'MongoDB Repository'
}
else {
$location = $::architecture ? {
'x86_64' => 'http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/',
'i686' => 'http://downloads-distro.mongodb.org/repo/redhat/os/i686/',
'i386' => 'http://downloads-distro.mongodb.org/repo/redhat/os/i686/',
default => undef
} elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
fail('Package repositories for versions older than 3.0 are unsupported')
} else {
$mongover = split($version, '[.]')
if $use_enterprise_repo {
$location = "https://repo.mongodb.com/yum/redhat/\$releasever/mongodb-enterprise/${mongover[0]}.${mongover[1]}/\$basearch/"
$description = 'MongoDB Enterprise Repository'
} else {
$location = "https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/${mongover[0]}.${mongover[1]}/\$basearch/"
$description = 'MongoDB Repository'
}
$description = 'MongoDB/10gen Repository'
}

class { 'mongodb::repo::yum': }
contain mongodb::repo::yum
}

'Debian': {
if ($repo_location != undef){
if $repo_location != undef {
$location = $repo_location
}
elsif $version and (versioncmp($version, '3.0.0') >= 0) {
} elsif $version == undef or versioncmp($version, '3.0.0') < 0 {
fail('Package repositories for versions older than 3.0 are unsupported')
} else {
if $use_enterprise_repo == true {
$repo_domain = 'repo.mongodb.com'
$repo_path = 'mongodb-enterprise'
$repo_domain = 'repo.mongodb.com'
$repo_path = 'mongodb-enterprise'
} else {
$repo_domain = 'repo.mongodb.org'
$repo_path = 'mongodb-org'
$repo_domain = 'repo.mongodb.org'
$repo_path = 'mongodb-org'
}

$mongover = split($version, '[.]')
Expand All @@ -72,18 +62,9 @@
default => '492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10'
}
$key_server = 'hkp://keyserver.ubuntu.com:80'
} else {
$location = $::operatingsystem ? {
'Debian' => 'http://downloads-distro.mongodb.org/repo/debian-sysvinit',
'Ubuntu' => 'http://downloads-distro.mongodb.org/repo/ubuntu-upstart',
default => undef
}
$release = 'dist'
$repos = '10gen'
$key = '492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10'
$key_server = 'hkp://keyserver.ubuntu.com:80'
}
class { 'mongodb::repo::apt': }

contain mongodb::repo::apt
}

default: {
Expand Down
2 changes: 1 addition & 1 deletion manifests/repo/yum.pp
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# We try to follow/reproduce the instruction
# http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat-centos-or-fedora-linux/

if($mongodb::repo::ensure == 'present' or $mongodb::repo::ensure == true) {
if $mongodb::repo::ensure == 'present' or $mongodb::repo::ensure == true {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should probably add that to the styleguide later

yumrepo { 'mongodb':
descr => $mongodb::repo::description,
baseurl => $mongodb::repo::location,
Expand Down
Loading