diff options
author | Dan Prince <dprince@redhat.com> | 2015-01-22 14:38:36 -0500 |
---|---|---|
committer | Dan Prince <dprince@redhat.com> | 2015-02-03 19:10:18 +0000 |
commit | a536d3c8887b99c3b6e270c2e6c2469e4241eb7a (patch) | |
tree | 0925603a7d53e00a76772b53db906851e82c436d | |
parent | 0fce77e3c2169a05d84ee6e7b76fe651429aa380 (diff) |
Puppet: Ceilometer controller support
This patch adds support for the Ceilometer controller
role including the Ceilometer:
-API
-central agent
-alarm notifier
-alarm evaluator
-collector
-expirer
In order to enable swift metering the swift::proxy ceilometer middleware
was added in.
Also, a minor adjustment to the existing ceilometer HA proxy setting
was made to accommodate ceilometer auth settings. (not exactly sure
why but this seems to be required)
Like upstream TripleO Ceilometer is currently using a MySQL database
backend. A follow on patch can support configuring MongoDB for use
with Ceilometer.
Change-Id: I4e171274bd7679d386d93492d13dfa7c5d37f6a8
-rw-r--r-- | controller-puppet.yaml | 14 | ||||
-rw-r--r-- | puppet/hieradata/common.yaml | 6 | ||||
-rw-r--r-- | puppet/hieradata/controller.yaml | 2 | ||||
-rw-r--r-- | puppet/hieradata/object.yaml | 5 | ||||
-rw-r--r-- | puppet/loadbalancer.pp | 2 | ||||
-rw-r--r-- | puppet/overcloud_controller.pp | 25 |
6 files changed, 49 insertions, 5 deletions
diff --git a/controller-puppet.yaml b/controller-puppet.yaml index c5462ff7..8b8a4eff 100644 --- a/controller-puppet.yaml +++ b/controller-puppet.yaml @@ -535,7 +535,6 @@ resources: swift_min_part_hours: {get_param: SwiftMinPartHours} swift_mount_check: {get_param: SwiftMountCheck} - # Map heat metadata into hiera datafiles ControllerConfig: type: OS::Heat::StructuredConfig @@ -658,9 +657,15 @@ resources: neutron_dnsmasq_options: {get_input: neutron_dnsmasq_options} neutron_dsn: {get_input: neutron_dsn} # Ceilometer - ceilometer_metering_secret: {get_input: ceilometer_metering_secret} - ceilometer_password: {get_input: ceilometer_password} - ceilometer_dsn: {get_input: ceilometer_dsn} + ceilometer::metering_secret: {get_input: ceilometer_metering_secret} + ceilometer::rabbit_userid: {get_input: rabbit_username} + ceilometer::rabbit_password: {get_input: rabbit_password} + ceilometer::rabbit_host: {get_input: controller_virtual_ip} + ceilometer::api::host: {get_input: controller_host} + ceilometer::api::keystone_password: {get_input: ceilometer_password} + ceilometer::api::keystone_host: {get_input: controller_virtual_ip} + ceilometer::db::database_connection: {get_input: ceilometer_dsn} + ceilometer::agent::auth::auth_password: {get_input: ceilometer_password} snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name} snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password} # Nova @@ -699,6 +704,7 @@ resources: tripleo::loadbalancer::mysql: true tripleo::loadbalancer::rabbitmq: true tripleo::loadbalancer::swift_proxy_server: true + tripleo::loadbalancer::ceilometer: true # NOTE(dprince): this example uses a composition class # on the puppet side (loadbalancer.pp). This seemed like the diff --git a/puppet/hieradata/common.yaml b/puppet/hieradata/common.yaml index 76cde950..a75bbe39 100644 --- a/puppet/hieradata/common.yaml +++ b/puppet/hieradata/common.yaml @@ -1,2 +1,8 @@ # Common Hiera data gets applied to all nodes ssh::server::storeconfigs_enabled: false + +# ceilometer settings used by compute and controller ceilo auth settings +ceilometer::agent::auth::auth_region: 'regionOne' +# FIXME: Might be better to use 'service' tenant here but this requires +# changes in the tripleo-incubator keystone role setup +ceilometer::agent::auth::auth_tenant_name: 'admin' diff --git a/puppet/hieradata/controller.yaml b/puppet/hieradata/controller.yaml index b13f8234..5f326ef4 100644 --- a/puppet/hieradata/controller.yaml +++ b/puppet/hieradata/controller.yaml @@ -19,6 +19,7 @@ neutron::server::auth_tenant: 'service' neutron::agents::metadata::auth_tenant: 'service' cinder::api::keystone_tenant: 'service' swift::proxy::authtoken::admin_tenant_name: 'service' +ceilometer::api::keystone_tenant: 'service' #swift swift::proxy::pipeline: @@ -29,6 +30,7 @@ swift::proxy::pipeline: - 'tempurl' - 'formpost' - 'staticweb' + - 'ceilometer' - 'authtoken' - 'keystone' - 'proxy-logging' diff --git a/puppet/hieradata/object.yaml b/puppet/hieradata/object.yaml index 759a7ba9..59a8b1cf 100644 --- a/puppet/hieradata/object.yaml +++ b/puppet/hieradata/object.yaml @@ -9,3 +9,8 @@ swift::storage::all::container_pipeline: swift::storage::all::account_pipeline: - healthcheck - account-server + +swift::proxy::keystone::operator_roles: + - admin + - swiftoperator + - ResellerAdmin diff --git a/puppet/loadbalancer.pp b/puppet/loadbalancer.pp index ea834c5e..84598da6 100644 --- a/puppet/loadbalancer.pp +++ b/puppet/loadbalancer.pp @@ -261,7 +261,7 @@ class tripleo::loadbalancer ( listening_service => 'ceilometer', ports => '8777', ipaddresses => hiera('controller_host'), - options => ['check', 'inter 2000', 'rise 2', 'fall 5'], + options => [], } } diff --git a/puppet/overcloud_controller.pp b/puppet/overcloud_controller.pp index 20413cc6..90f69eb1 100644 --- a/puppet/overcloud_controller.pp +++ b/puppet/overcloud_controller.pp @@ -76,6 +76,14 @@ if hiera('step') >= 1 { dbname => $heat_dsn[6], allowed_hosts => $allowed_hosts, } + $ceilometer_dsn = split(hiera('ceilometer::db::database_connection'), '[@:/?]') + class { 'ceilometer::db::mysql': + user => $ceilometer_dsn[3], + password => $ceilometer_dsn[4], + host => $ceilometer_dsn[5], + dbname => $ceilometer_dsn[6], + allowed_hosts => $allowed_hosts, + } if $::osfamily == 'RedHat' { $rabbit_provider = 'yum' @@ -221,6 +229,7 @@ if hiera('step') >= 2 { include ::swift::proxy::keystone include ::swift::proxy::authtoken include ::swift::proxy::staticweb + include ::swift::proxy::ceilometer include ::swift::proxy::ratelimit include ::swift::proxy::catch_errors include ::swift::proxy::tempurl @@ -242,4 +251,20 @@ if hiera('step') >= 2 { swift::storage::filter::recon { $swift_components : } swift::storage::filter::healthcheck { $swift_components : } + # Ceilometer + include ::ceilometer + include ::ceilometer::api + include ::ceilometer::db + include ::ceilometer::agent::notification + include ::ceilometer::agent::central + include ::ceilometer::alarm::notifier + include ::ceilometer::alarm::evaluator + include ::ceilometer::expirer + include ::ceilometer::collector + class { 'ceilometer::agent::auth': + auth_url => join(['http://', hiera('controller_virtual_ip'), ':5000/v2.0']), + } + + Cron <| title == 'ceilometer-expirer' |> { command => "sleep $((\$(od -A n -t d -N 3 /dev/urandom) % 86400)) && ${::ceilometer::params::expirer_command}" } + } #END STEP 2 |