aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Prince <dprince@redhat.com>2015-01-22 14:38:36 -0500
committerDan Prince <dprince@redhat.com>2015-02-03 19:10:18 +0000
commita536d3c8887b99c3b6e270c2e6c2469e4241eb7a (patch)
tree0925603a7d53e00a76772b53db906851e82c436d
parent0fce77e3c2169a05d84ee6e7b76fe651429aa380 (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.yaml14
-rw-r--r--puppet/hieradata/common.yaml6
-rw-r--r--puppet/hieradata/controller.yaml2
-rw-r--r--puppet/hieradata/object.yaml5
-rw-r--r--puppet/loadbalancer.pp2
-rw-r--r--puppet/overcloud_controller.pp25
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