Ceilometer composable roles for controller

Depends-On: I4b5e93a108e80e91af26ffee454130ee18c0042e

Change-Id: I59c948ead475f449cb8d1b752f39b7eaaf056130
This commit is contained in:
Pradeep Kilambi
2016-06-01 16:53:06 -04:00
committed by Emilien Macchi
parent 61f31831bd
commit c48410a05e
16 changed files with 380 additions and 277 deletions

View File

@@ -30,25 +30,6 @@ if hiera('step') >= 2 {
include ::timezone
# MongoDB
if downcase(hiera('ceilometer_backend')) == 'mongodb' {
# NOTE(gfidente): We need to pass the list of IPv6 addresses *with* port and
# without the brackets as 'members' argument for the 'mongodb_replset'
# resource.
if str2bool(hiera('mongodb::server::ipv6', false)) {
$mongo_node_ips_with_port_prefixed = prefix(hiera('mongo_node_ips'), '[')
$mongo_node_ips_with_port = suffix($mongo_node_ips_with_port_prefixed, ']:27017')
$mongo_node_ips_with_port_nobr = suffix(hiera('mongo_node_ips'), ':27017')
} else {
$mongo_node_ips_with_port = suffix(hiera('mongo_node_ips'), ':27017')
$mongo_node_ips_with_port_nobr = suffix(hiera('mongo_node_ips'), ':27017')
}
$mongo_node_string = join($mongo_node_ips_with_port, ',')
$mongodb_replset = hiera('mongodb::server::replset')
$ceilometer_mongodb_conn_string = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
}
if str2bool(hiera('enable_galera', true)) {
$mysql_config_file = '/etc/my.cnf.d/galera.cnf'
} else {
@@ -76,9 +57,6 @@ if hiera('step') >= 2 {
if downcase(hiera('gnocchi_indexer_backend')) == 'mysql' {
include ::gnocchi::db::mysql
}
if downcase(hiera('ceilometer_backend')) == 'mysql' {
include ::ceilometer::db::mysql
}
include ::aodh::db::mysql
$enable_ceph = hiera('ceph_storage_count', 0) > 0 or hiera('enable_ceph_storage', false)
@@ -244,31 +222,6 @@ if hiera('step') >= 4 {
swift::storage::filter::healthcheck { $swift_components : }
}
# Ceilometer
$ceilometer_backend = downcase(hiera('ceilometer_backend'))
case $ceilometer_backend {
/mysql/ : {
$ceilometer_database_connection = hiera('ceilometer_mysql_conn_string')
}
default : {
$ceilometer_database_connection = $ceilometer_mongodb_conn_string
}
}
include ::ceilometer
include ::ceilometer::config
include ::ceilometer::api
include ::ceilometer::agent::notification
include ::ceilometer::agent::central
include ::ceilometer::expirer
include ::ceilometer::collector
include ::ceilometer::agent::auth
include ::ceilometer::dispatcher::gnocchi
class { '::ceilometer::db' :
database_connection => $ceilometer_database_connection,
}
Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
# Aodh
class { '::aodh' :
database_connection => hiera('aodh_mysql_conn_string'),

View File

@@ -21,7 +21,6 @@ Pcmk_resource <| |> {
# TODO(jistr): use pcs resource provider instead of just no-ops
Service <|
tag == 'aodh-service' or
tag == 'ceilometer-service' or
tag == 'gnocchi-service' or
tag == 'neutron-service' or
tag == 'nova-service'
@@ -95,10 +94,6 @@ if hiera('step') >= 1 {
op_params => 'start timeout=200s stop timeout=200s',
}
if downcase(hiera('ceilometer_backend')) == 'mongodb' {
include ::mongodb::params
}
# Galera
if str2bool(hiera('enable_galera', true)) {
$mysql_config_file = '/etc/my.cnf.d/galera.cnf'
@@ -247,12 +242,6 @@ if hiera('step') >= 2 {
# Create all the database schemas
if $sync_db {
if downcase(hiera('ceilometer_backend')) == 'mysql' {
class { '::ceilometer::db::mysql':
require => Exec['galera-ready'],
}
}
if downcase(hiera('gnocchi_indexer_backend')) == 'mysql' {
class { '::gnocchi::db::mysql':
require => Exec['galera-ready'],
@@ -442,44 +431,6 @@ MYSQL_HOST=localhost\n",
swift::storage::filter::healthcheck { $swift_components : }
}
# Ceilometer
case downcase(hiera('ceilometer_backend')) {
/mysql/: {
$ceilometer_database_connection = hiera('ceilometer_mysql_conn_string')
}
default: {
$mongo_node_string = join($mongo_node_ips_with_port, ',')
$ceilometer_database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
}
}
include ::ceilometer
include ::ceilometer::config
class { '::ceilometer::api' :
manage_service => false,
enabled => false,
}
class { '::ceilometer::agent::notification' :
manage_service => false,
enabled => false,
}
class { '::ceilometer::agent::central' :
manage_service => false,
enabled => false,
}
class { '::ceilometer::collector' :
manage_service => false,
enabled => false,
}
include ::ceilometer::expirer
class { '::ceilometer::db' :
database_connection => $ceilometer_database_connection,
sync_db => $sync_db,
}
include ::ceilometer::agent::auth
include ::ceilometer::dispatcher::gnocchi
Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" }
# httpd/apache and horizon
# NOTE(gfidente): server-status can be consumed by the pacemaker resource agent
class { '::apache' :
@@ -757,49 +708,12 @@ password=\"${mysql_root_password}\"",
Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
}
# Ceilometer and Aodh
case downcase(hiera('ceilometer_backend')) {
/mysql/: {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name:
clone_params => 'interleave=true',
require => Pacemaker::Resource::Ocf['openstack-core'],
}
}
default: {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name:
clone_params => 'interleave=true',
require => [Pacemaker::Resource::Ocf['openstack-core'],
Pacemaker::Resource::Service[$::mongodb::params::service_name]],
}
}
}
pacemaker::resource::service { $::ceilometer::params::collector_service_name :
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::ceilometer::params::api_service_name :
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name :
clone_params => 'interleave=true',
}
# Fedora doesn't know `require-all` parameter for constraints yet
if $::operatingsystem == 'Fedora' {
$redis_ceilometer_constraint_params = undef
$redis_aodh_constraint_params = undef
} else {
$redis_ceilometer_constraint_params = 'require-all=false'
$redis_aodh_constraint_params = 'require-all=false'
}
pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint':
constraint_type => 'order',
first_resource => 'redis-master',
second_resource => "${::ceilometer::params::agent_central_service_name}-clone",
first_action => 'promote',
second_action => 'start',
constraint_params => $redis_ceilometer_constraint_params,
require => [Pacemaker::Resource::Ocf['redis'],
Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]],
}
pacemaker::constraint::base { 'redis-then-aodh-evaluator-constraint':
constraint_type => 'order',
first_resource => 'redis-master',
@@ -810,49 +724,6 @@ password=\"${mysql_root_password}\"",
require => [Pacemaker::Resource::Ocf['redis'],
Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name]],
}
pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint':
constraint_type => 'order',
first_resource => 'openstack-core-clone',
second_resource => "${::ceilometer::params::agent_central_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Ocf['openstack-core']],
}
pacemaker::constraint::base { 'keystone-then-ceilometer-notification-constraint':
constraint_type => 'order',
first_resource => 'openstack-core-clone',
second_resource => "${::ceilometer::params::agent_notification_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Ocf['openstack-core']],
}
pacemaker::constraint::base { 'ceilometer-central-then-ceilometer-collector-constraint':
constraint_type => 'order',
first_resource => "${::ceilometer::params::agent_central_service_name}-clone",
second_resource => "${::ceilometer::params::collector_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],
}
pacemaker::constraint::base { 'ceilometer-collector-then-ceilometer-api-constraint':
constraint_type => 'order',
first_resource => "${::ceilometer::params::collector_service_name}-clone",
second_resource => "${::ceilometer::params::api_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name],
Pacemaker::Resource::Service[$::ceilometer::params::api_service_name]],
}
pacemaker::constraint::colocation { 'ceilometer-api-with-ceilometer-collector-colocation':
source => "${::ceilometer::params::api_service_name}-clone",
target => "${::ceilometer::params::collector_service_name}-clone",
score => 'INFINITY',
require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
Pacemaker::Resource::Service[$::ceilometer::params::collector_service_name]],
}
# Aodh
pacemaker::resource::service { $::aodh::params::evaluator_service_name :
clone_params => 'interleave=true',
@@ -895,17 +766,6 @@ password=\"${mysql_root_password}\"",
require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
Pacemaker::Resource::Service[$::aodh::params::listener_service_name]],
}
if downcase(hiera('ceilometer_backend')) == 'mongodb' {
pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':
constraint_type => 'order',
first_resource => "${::mongodb::params::service_name}-clone",
second_resource => "${::ceilometer::params::agent_central_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name],
Pacemaker::Resource::Service[$::mongodb::params::service_name]],
}
}
# gnocchi
pacemaker::resource::service { $::gnocchi::params::metricd_service_name :