phpservermon/puphpet/puppet/nodes/MongoDb.pp

91 lines
2.3 KiB
Puppet

if $mongodb_values == undef { $mongodb_values = hiera_hash('mongodb', false) }
if $php_values == undef { $php_values = hiera_hash('php', false) }
if $apache_values == undef { $apache_values = hiera_hash('apache', false) }
if $nginx_values == undef { $nginx_values = hiera_hash('nginx', false) }
include puphpet::params
if hash_key_equals($apache_values, 'install', 1)
or hash_key_equals($nginx_values, 'install', 1)
{
$mongodb_webserver_restart = true
} else {
$mongodb_webserver_restart = false
}
if hash_key_equals($mongodb_values, 'install', 1) {
file { ['/data', '/data/db']:
ensure => directory,
mode => 0775,
before => Class['mongodb::globals'],
}
Class['mongodb::globals']
-> Class['mongodb::server']
class { 'mongodb::globals':
manage_package_repo => true,
}
create_resources('class', { 'mongodb::server' => $mongodb_values['settings'] })
if $::osfamily == 'redhat' {
class { 'mongodb::client':
require => Class['mongodb::server']
}
}
if count($mongodb_values['databases']) > 0 {
each( $mongodb_values['databases'] ) |$key, $database| {
$database_merged = delete(merge($database, {
'dbname' => $database['name'],
}), 'name')
create_resources( mongodb_db, {
"${database['user']}@${database['name']}" => $database_merged
})
}
}
if hash_key_equals($php_values, 'install', 1)
and ! defined(Puphpet::Php::Pecl['mongo'])
{
puphpet::php::pecl { 'mongo':
service_autorestart => $mongodb_webserver_restart,
require => Class['mongodb::server']
}
}
}
define mongodb_db (
$dbname,
$user,
$password,
$roles = ['dbAdmin', 'readWrite', 'userAdmin'],
$tries = 10,
) {
if ! value_true($name) or ! value_true($password) {
fail( 'MongoDB requires that name and password be set. Please check your settings!' )
}
if ! defined(Mongodb_database[$dbname]) {
mongodb_database { $dbname:
ensure => present,
tries => $tries,
require => Class['mongodb::server'],
}
}
$hash = mongodb_password($user, $password)
if ! defined(Mongodb_user[$user]) {
mongodb_user { $user:
ensure => present,
password_hash => $hash,
database => $dbname,
roles => $roles,
require => Mongodb_database[$dbname],
}
}
}