Merge pull request #278 from enovance/bug/56/spredzy
Enable mongodb replicaset
This commit is contained in:
commit
ff99b29f88
@ -29,10 +29,16 @@
|
|||||||
# http://docs.mongodb.org/manual/reference/configuration-options/#nojournal
|
# http://docs.mongodb.org/manual/reference/configuration-options/#nojournal
|
||||||
# Defaults to false
|
# Defaults to false
|
||||||
#
|
#
|
||||||
|
# [*replset_members*]
|
||||||
|
# (optional) Ceilometer Replica set members hostnames
|
||||||
|
# Should be an array. Example: ['node1', 'node2', node3']
|
||||||
|
# Default value in params
|
||||||
|
#
|
||||||
|
|
||||||
class cloud::database::nosql(
|
class cloud::database::nosql(
|
||||||
$bind_ip = $os_params::internal_netif_ip,
|
$bind_ip = $os_params::internal_netif_ip,
|
||||||
$nojournal = false,
|
$nojournal = false,
|
||||||
|
$replset_members = $os_params::mongo_nodes
|
||||||
) {
|
) {
|
||||||
|
|
||||||
# bind_ip should be an array
|
# bind_ip should be an array
|
||||||
@ -49,6 +55,24 @@ class cloud::database::nosql(
|
|||||||
class { 'mongodb':
|
class { 'mongodb':
|
||||||
bind_ip => $bind_ip_real,
|
bind_ip => $bind_ip_real,
|
||||||
nojournal => $nojournal,
|
nojournal => $nojournal,
|
||||||
|
replset => 'ceilometer',
|
||||||
|
}
|
||||||
|
|
||||||
|
exec {'check_mongodb' :
|
||||||
|
command => "/usr/bin/mongo ${bind_ip}:27017",
|
||||||
|
logoutput => false,
|
||||||
|
tries => 60,
|
||||||
|
try_sleep => 5,
|
||||||
|
require => Service['mongodb'],
|
||||||
|
}
|
||||||
|
|
||||||
|
mongodb_replset{'ceilometer':
|
||||||
|
members => $replset_members,
|
||||||
|
before => Anchor['mongodb setup done'],
|
||||||
|
}
|
||||||
|
|
||||||
|
anchor {'mongodb setup done' :
|
||||||
|
require => Exec['check_mongodb'],
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ class cloud::storage::rbd (
|
|||||||
auth_type => 'cephx',
|
auth_type => 'cephx',
|
||||||
cluster_network => $cluster_network,
|
cluster_network => $cluster_network,
|
||||||
public_network => $public_network,
|
public_network => $public_network,
|
||||||
|
enable_service => true
|
||||||
}
|
}
|
||||||
|
|
||||||
Exec {
|
Exec {
|
||||||
|
@ -21,25 +21,27 @@ class cloud::telemetry::server(
|
|||||||
$ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
|
$ks_keystone_internal_proto = $os_params::ks_keystone_internal_proto,
|
||||||
$ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port,
|
$ks_ceilometer_internal_port = $os_params::ks_ceilometer_internal_port,
|
||||||
$ks_ceilometer_password = $os_params::ks_ceilometer_password,
|
$ks_ceilometer_password = $os_params::ks_ceilometer_password,
|
||||||
$ceilometer_database_connection = $os_params::ceilometer_database_connection,
|
|
||||||
$api_eth = $os_params::api_eth,
|
$api_eth = $os_params::api_eth,
|
||||||
|
$mongo_nodes = $os_params::mongo_nodes,
|
||||||
|
$mongo_primary = $os_params::mongo_primary,
|
||||||
){
|
){
|
||||||
|
|
||||||
include 'cloud::telemetry'
|
include 'cloud::telemetry'
|
||||||
|
|
||||||
$db_conn = regsubst($ceilometer_database_connection, 'mongodb:\/\/(\.*)', '\2')
|
$s_mongo_nodes = join($mongo_nodes, ',')
|
||||||
exec {'check_mongodb' :
|
$db_conn = "mongodb://${s_mongo_nodes}/ceilometer?replicaSet=ceilometer"
|
||||||
command => "/usr/bin/mongo ${db_conn}",
|
|
||||||
logoutput => false,
|
if $::hostname == $mongo_primary {
|
||||||
tries => 60,
|
$sync_db = true
|
||||||
try_sleep => 5,
|
} else {
|
||||||
|
$sync_db = false
|
||||||
}
|
}
|
||||||
Service <| title == 'mongodb' |> -> Exec['check_mongodb']
|
|
||||||
|
|
||||||
# Install MongoDB database
|
# Install MongoDB database
|
||||||
class { 'ceilometer::db':
|
class { 'ceilometer::db':
|
||||||
database_connection => $ceilometer_database_connection,
|
database_connection => $db_conn,
|
||||||
require => Exec['check_mongodb'],
|
sync_db => $sync_db,
|
||||||
|
require => Anchor['mongodb setup done'],
|
||||||
}
|
}
|
||||||
|
|
||||||
# Install Ceilometer-collector
|
# Install Ceilometer-collector
|
||||||
|
@ -24,7 +24,8 @@ describe 'cloud::database::nosql' do
|
|||||||
|
|
||||||
let :params do
|
let :params do
|
||||||
{ :bind_ip => '10.0.0.1',
|
{ :bind_ip => '10.0.0.1',
|
||||||
:nojournal => false }
|
:nojournal => false,
|
||||||
|
:replset_members => ['node1', 'node2', 'node3'] }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'configure mongodb server' do
|
it 'configure mongodb server' do
|
||||||
@ -35,6 +36,18 @@ describe 'cloud::database::nosql' do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'configure mongodb replicasets' do
|
||||||
|
should contain_exec('check_mongodb').with(
|
||||||
|
:command => "/usr/bin/mongo 10.0.0.1:27017",
|
||||||
|
:logoutput => false,
|
||||||
|
:tries => 60,
|
||||||
|
:try_sleep => 5
|
||||||
|
)
|
||||||
|
should contain_mongodb_replset('ceilometer').with(
|
||||||
|
:members => ['node1', 'node2', 'node3']
|
||||||
|
)
|
||||||
|
should contain_anchor('mongodb setup done')
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'on Debian platforms' do
|
context 'on Debian platforms' do
|
||||||
|
@ -44,7 +44,8 @@ describe 'cloud::telemetry::server' do
|
|||||||
:ks_ceilometer_internal_port => '8777',
|
:ks_ceilometer_internal_port => '8777',
|
||||||
:ks_ceilometer_password => 'secrete',
|
:ks_ceilometer_password => 'secrete',
|
||||||
:api_eth => '10.0.0.1',
|
:api_eth => '10.0.0.1',
|
||||||
:ceilometer_database_connection => 'mongodb://10.0.0.2/ceilometer' }
|
:mongo_nodes => ['node1', 'node2', 'node3'],
|
||||||
|
:mongo_primary => 'node1' }
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'configure ceilometer common' do
|
it 'configure ceilometer common' do
|
||||||
@ -65,18 +66,6 @@ describe 'cloud::telemetry::server' do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'check mongodb is started' do
|
|
||||||
should contain_exec('check_mongodb').with({
|
|
||||||
:command => '/usr/bin/mongo 10.0.0.2/ceilometer',
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configure ceilometer db' do
|
|
||||||
should contain_class('ceilometer::db').with(
|
|
||||||
:database_connection => 'mongodb://10.0.0.2/ceilometer'
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
it 'configure ceilometer collector' do
|
it 'configure ceilometer collector' do
|
||||||
should contain_class('ceilometer::collector')
|
should contain_class('ceilometer::collector')
|
||||||
end
|
end
|
||||||
@ -106,11 +95,32 @@ describe 'cloud::telemetry::server' do
|
|||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'configure ceilometer db on primary mongodb node' do
|
||||||
|
it 'configure ceilometer db' do
|
||||||
|
should contain_class('ceilometer::db').with(
|
||||||
|
:sync_db => true,
|
||||||
|
:database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'configure ceilometer db on secondary mongodb node' do
|
||||||
|
before :each do
|
||||||
|
facts.merge!( :hostname => 'node2' )
|
||||||
|
end
|
||||||
|
it 'configure ceilometer db' do
|
||||||
|
should contain_class('ceilometer::db').with(
|
||||||
|
:sync_db => false,
|
||||||
|
:database_connection => 'mongodb://node1,node2,node3/ceilometer?replicaSet=ceilometer'
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'on Debian platforms' do
|
context 'on Debian platforms' do
|
||||||
let :facts do
|
let :facts do
|
||||||
{ :osfamily => 'Debian' }
|
{ :osfamily => 'Debian',
|
||||||
|
:hostname => 'node1' }
|
||||||
end
|
end
|
||||||
|
|
||||||
it_configures 'openstack telemetry server'
|
it_configures 'openstack telemetry server'
|
||||||
@ -118,7 +128,8 @@ describe 'cloud::telemetry::server' do
|
|||||||
|
|
||||||
context 'on RedHat platforms' do
|
context 'on RedHat platforms' do
|
||||||
let :facts do
|
let :facts do
|
||||||
{ :osfamily => 'RedHat' }
|
{ :osfamily => 'RedHat',
|
||||||
|
:hostname => 'node1' }
|
||||||
end
|
end
|
||||||
|
|
||||||
it_configures 'openstack telemetry server'
|
it_configures 'openstack telemetry server'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user