From 7b060f0b365c1d5b1adf549b8ddc9e281228c534 Mon Sep 17 00:00:00 2001 From: Mykyta Koshykov Date: Wed, 3 Jun 2015 09:13:11 -0500 Subject: [PATCH] Possibility to detach ceilometer from controllers Adds the possibility to use external (non-controllers) keystone, db, rabbitmq, etc for ceilometer services. Partial blueprint: detach-components-from-controllers Change-Id: I670ac5c535b43bb2d8cf95209e3a9ea772d1dd6c Co-Authored-By: Aleksandr Didenko --- .../puppet/openstack/manifests/ceilometer.pp | 20 +++++--- .../modular/ceilometer/compute.pp | 15 +++++- .../modular/ceilometer/controller.pp | 48 ++++++++++++------- 3 files changed, 58 insertions(+), 25 deletions(-) diff --git a/deployment/puppet/openstack/manifests/ceilometer.pp b/deployment/puppet/openstack/manifests/ceilometer.pp index 9234a6e5b1..0c65176490 100644 --- a/deployment/puppet/openstack/manifests/ceilometer.pp +++ b/deployment/puppet/openstack/manifests/ceilometer.pp @@ -6,6 +6,9 @@ class openstack::ceilometer ( $keystone_password = 'ceilometer_pass', + $keystone_user = 'ceilometer', + $keystone_tenant = 'services', + $keystone_region = 'RegionOne', $metering_secret = 'ceilometer', $verbose = false, $use_syslog = false, @@ -50,8 +53,11 @@ class openstack::ceilometer ( # Configure authentication for agents class { '::ceilometer::agent::auth': - auth_url => "http://${keystone_host}:5000/v2.0", - auth_password => $keystone_password, + auth_url => "http://${keystone_host}:5000/v2.0", + auth_password => $keystone_password, + auth_region => $keystone_region, + auth_tenant_name => $keystone_tenant, + auth_user => $keystone_user, } class { '::ceilometer::client': } @@ -89,10 +95,12 @@ class openstack::ceilometer ( # Install the ceilometer-api service # The keystone_password parameter is mandatory class { '::ceilometer::api': - keystone_host => $keystone_host, - keystone_password => $keystone_password, - host => $host, - port => $port, + keystone_host => $keystone_host, + keystone_user => $keystone_user, + keystone_password => $keystone_password, + keystone_tenant => $keystone_tenant, + host => $host, + port => $port, } # Clean up expired data once a week diff --git a/deployment/puppet/osnailyfacter/modular/ceilometer/compute.pp b/deployment/puppet/osnailyfacter/modular/ceilometer/compute.pp index e4231c86cb..047074de00 100644 --- a/deployment/puppet/osnailyfacter/modular/ceilometer/compute.pp +++ b/deployment/puppet/osnailyfacter/modular/ceilometer/compute.pp @@ -4,7 +4,6 @@ $verbose = hiera('verbose', true) $debug = hiera('debug', false) $use_syslog = hiera('use_syslog', true) $syslog_log_facility = hiera('syslog_log_facility_ceilometer', 'LOG_LOCAL0') -$amqp_hosts = hiera('amqp_hosts') $rabbit_hash = hiera('rabbit_hash') $management_vip = hiera('management_vip') @@ -15,8 +14,17 @@ $default_ceilometer_hash = { 'metering_secret' => 'ceilometer', } -$ceilometer_hash = hiera('ceilometer', $default_ceilometer_hash) +if hiera('amqp_hosts', false) { + $amqp_hosts = hiera('amqp_hosts') +} else { + $amqp_nodes = hiera('amqp_nodes') + $amqp_port = hiera('amqp_port', '5673') + $amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>") +} +$region = hiera('region', 'RegionOne') +$ceilometer_hash = hiera_hash('ceilometer', $default_ceilometer_hash) +$ceilometer_region = pick($ceilometer_hash['region'], $region) $ceilometer_enabled = $ceilometer_hash['enabled'] $amqp_password = $rabbit_hash['password'] $amqp_user = $rabbit_hash['user'] @@ -33,6 +41,9 @@ if ($ceilometer_enabled) { amqp_hosts => $amqp_hosts, amqp_user => $amqp_user, amqp_password => $amqp_password, + keystone_user => $ceilometer_hash['user'], + keystone_tenant => $ceilometer_hash['tenant'], + keystone_region => $ceilometer_region, keystone_host => $service_endpoint, keystone_password => $ceilometer_user_password, on_compute => true, diff --git a/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp b/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp index 2c95a737e6..70b37c667a 100644 --- a/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp +++ b/deployment/puppet/osnailyfacter/modular/ceilometer/controller.pp @@ -1,15 +1,12 @@ notice('MODULAR: ceilometer/controller.pp') -$verbose = hiera('verbose', true) -$debug = hiera('debug', false) -$use_syslog = hiera('use_syslog', true) -$syslog_log_facility = hiera('syslog_log_facility_ceilometer', 'LOG_LOCAL0') -$nodes_hash = hiera('nodes') -$storage_hash = hiera('storage') -$amqp_hosts = hiera('amqp_hosts') -$rabbit_hash = hiera('rabbit_hash') -$management_vip = hiera('management_vip') -$internal_address = hiera('internal_address') +if hiera('amqp_hosts', false) { + $amqp_hosts = hiera('amqp_hosts') +} else { + $amqp_nodes = hiera('amqp_nodes') + $amqp_port = hiera('amqp_port', '5673') + $amqp_hosts = inline_template("<%= @amqp_nodes.map {|x| x + ':' + @amqp_port}.join ',' %>") +} $default_ceilometer_hash = { 'enabled' => false, @@ -18,15 +15,29 @@ $default_ceilometer_hash = { 'metering_secret' => 'ceilometer', } +$verbose = hiera('verbose', true) +$debug = hiera('debug', false) +$use_syslog = hiera('use_syslog', true) +$syslog_log_facility = hiera('syslog_log_facility_ceilometer', 'LOG_LOCAL0') +$nodes_hash = hiera('nodes') +$storage_hash = hiera('storage') +$rabbit_hash = hiera_hash('rabbit_hash') +$management_vip = hiera('management_vip') +$internal_address = hiera('internal_address') +$mongo_roles = hiera('mongo_roles', 'mongo') +$region = hiera('region', 'RegionOne') +$ceilometer_hash = hiera_hash('ceilometer', $default_ceilometer_hash) +$ceilometer_region = pick($ceilometer_hash['region'], $region) + + $default_mongo_hash = { 'enabled' => false, } -$ceilometer_hash = hiera('ceilometer', $default_ceilometer_hash) -$mongo_hash = hiera('mongo', $default_mongo_hash) +$mongo_hash = hiera_hash('mongo', $default_mongo_hash) if $mongo_hash['enabled'] and $ceilometer_hash['enabled'] { - $exteranl_mongo_hash = hiera('external_mongo') + $exteranl_mongo_hash = hiera_hash('external_mongo') $ceilometer_db_user = $exteranl_mongo_hash['mongo_user'] $ceilometer_db_password = $exteranl_mongo_hash['mongo_password'] $ceilometer_db_dbname = $exteranl_mongo_hash['mongo_db_name'] @@ -47,9 +58,9 @@ $swift_rados_backend = $storage_hash['objects_ceph'] $amqp_password = $rabbit_hash['password'] $amqp_user = $rabbit_hash['user'] $rabbit_ha_queues = true -$service_endpoint = $management_vip +$service_endpoint = hiera('service_endpoint', $management_vip) $api_bind_address = $internal_address -$ha_mode = true +$ha_mode = pick($ceilometer_hash['ha_mode'], true) if $ceilometer_hash['enabled'] { if $external_mongo { @@ -60,8 +71,8 @@ if $ceilometer_hash['enabled'] { $mongo_replicaset = undef } } else { - $mongo_hosts = mongo_hosts($nodes_hash) - if size(mongo_hosts($nodes_hash, 'array', 'mongo')) > 1 { + $mongo_hosts = mongo_hosts($nodes_hash, 'string', $mongo_roles ) + if size(mongo_hosts($nodes_hash, 'array', $mongo_roles)) > 1 { $mongo_replicaset = 'ceilometer' } else { $mongo_replicaset = undef @@ -90,6 +101,9 @@ if ($ceilometer_enabled) { rabbit_ha_queues => $rabbit_ha_queues, keystone_host => $service_endpoint, keystone_password => $ceilometer_user_password, + keystone_user => $ceilometer_hash['user'], + keystone_tenant => $ceilometer_hash['tenant'], + keystone_region => $ceilometer_region, host => $api_bind_address, ha_mode => $ha_mode, on_controller => true,