diff --git a/manifests/database/nosql.pp b/manifests/database/nosql.pp index cc68acb8..f00e2555 100644 --- a/manifests/database/nosql.pp +++ b/manifests/database/nosql.pp @@ -29,10 +29,20 @@ # http://docs.mongodb.org/manual/reference/configuration-options/#nojournal # Defaults to false # +# [*replset_members*] +# (optional) Ceilometer Replica set members +# Default value in params +# +# [*mongo_primary*] +# (optional) MongoDB replicaset primary hostname +# Default value in params +# class cloud::database::nosql( - $bind_ip = $os_params::internal_netif_ip, - $nojournal = false, + $bind_ip = $os_params::internal_netif_ip, + $nojournal = false, + $replset_members = $os_params::mongo_nodes, + $mongo_primary = $os_params::mongo_primary ) { # bind_ip should be an array @@ -49,6 +59,28 @@ class cloud::database::nosql( class { 'mongodb': bind_ip => $bind_ip_real, nojournal => $nojournal, + replset => 'ceilometer', + } + + exec {'check_mongodb' : + command => "/usr/bin/mongo ${bind_ip}:27017", + logoutput => false, + tries => 60, + try_sleep => 5, + require => Service['mongodb'], + } + + if $::hostname == $mongo_primary and !empty($replset_members) { + + mongodb_replset{'ceilometer': + members => $replset_members, + before => Anchor['mongodb setup done'], + } + + } + + anchor {'mongodb setup done' : + require => Exec['check_mongodb'], } } diff --git a/manifests/telemetry/server.pp b/manifests/telemetry/server.pp index 99f3b21f..a9f65015 100644 --- a/manifests/telemetry/server.pp +++ b/manifests/telemetry/server.pp @@ -21,25 +21,27 @@ class cloud::telemetry::server( $ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto, $ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port, $ks_ceilometer_password = $os_params::ks_ceilometer_password, - $ceilometer_database_connection = $os_params::ceilometer_database_connection, $api_eth = $os_params::api_eth, + $mongo_nodes = $os_params::mongo_nodes, + $mongo_primary = $os_params::mongo_primary, ){ include 'cloud::telemetry' - $db_conn = regsubst($ceilometer_database_connection, 'mongodb:\/\/(\.*)', '\2') - exec {'check_mongodb' : - command => "/usr/bin/mongo ${db_conn}", - logoutput => false, - tries => 60, - try_sleep => 5, + $s_mongo_nodes = join($mongo_nodes, ',') + $db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer" + + if $::hostname == $mongo_primary { + $sync_db = true + } else { + $sync_db = false } - Service <| title == 'mongodb' |> -> Exec['check_mongodb'] # Install MongoDB database class { 'ceilometer::db': - database_connection => $ceilometer_database_connection, - require => Exec['check_mongodb'], + database_connection => $db_conn, + sync_db => $sync_db, + require => Anchor['mongodb setup done'], } # Install Ceilometer-collector