3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'manifests/mongo/puppetlabs.pp', line 3
class psick::mongo::puppetlabs (
String $ensure = $::psick::mongo::ensure,
Variant[Undef,String] $key = $::psick::mongo::key,
Variant[Undef,String] $replset = $::psick::mongo::replset,
Variant[Undef,String] $default_password = $::psick::mongo::default_password,
Variant[Undef,String] $replset_arbiter = $::psick::mongo::replset_arbiter,
Variant[Undef,Array] $replset_members = $::psick::mongo::replset_members,
Variant[Undef,Boolean] $shardsvr = $::psick::mongo::shardsvr,
Variant[Undef,Hash] $databases = $::psick::mongo::databases,
Variant[Undef,Hash] $hostnames = $::psick::mongo::hostnames,
) {
class { '::mongodb::globals': manage_package_repo => true }
-> class { '::mongodb::client': }
-> class { '::mongodb::server':
shardsvr => $shardsvr,
replset => $replset,
replset_members => $replset_members,
bind_ip => [ '0.0.0.0' ],
auth => true,
keyfile => '/etc/mongo.key',
key => $key,
}
# Quick and dirty TODO Automate mongo servers lookup
if $hostnames {
$hostnames.each|$ho,$ho_options| {
host { $ho:
ip => $ho_options['ip'],
before => Class['mongodb::server'],
}
}
}
if $databases {
$databases.each|$db,$db_options| {
$default_options = {
user => "${db}_user",
roles => [ 'readWrite' ],
password_hash => mongodb_password("${db}_user",pick_default($db_options['password'],$default_password)),
tries => 10,
}
$real_options = $db_options + $default_options
mongodb_database { $db:
ensure => 'present',
tries => $real_options['tries'],
require => Class['mongodb::server'],
}
mongodb_user { $real_options['user']:
ensure => 'present',
database => $db,
tries => $real_options['tries'],
roles => $real_options['roles'],
password_hash => $real_options['password_hash'],
require => Class['mongodb::server'],
}
}
}
}
|