Puppet: Ceilometer controller support
authorDan Prince <dprince@redhat.com>
Thu, 22 Jan 2015 19:38:36 +0000 (14:38 -0500)
committerDan Prince <dprince@redhat.com>
Tue, 3 Feb 2015 19:10:18 +0000 (19:10 +0000)
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

controller-puppet.yaml
puppet/hieradata/common.yaml
puppet/hieradata/controller.yaml
puppet/hieradata/object.yaml
puppet/loadbalancer.pp
puppet/overcloud_controller.pp

index c5462ff..8b8a4ef 100644 (file)
@@ -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
index 76cde95..a75bbe3 100644 (file)
@@ -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'
index b13f823..5f326ef 100644 (file)
@@ -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'
index 759a7ba..59a8b1c 100644 (file)
@@ -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
index ea834c5..84598da 100644 (file)
@@ -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           => [],
     }
   }
 
index 20413cc..90f69eb 100644 (file)
@@ -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