Re-enable Ceilometer composable roles for controller
authorEmilien Macchi <emilien@redhat.com>
Thu, 23 Jun 2016 20:09:14 +0000 (16:09 -0400)
committerPradeep Kilambi <pkilambi@redhat.com>
Mon, 11 Jul 2016 15:00:36 +0000 (11:00 -0400)
This patch brings back Ceilometer composable roles for controller,
module some adjustments to make it work.

Fixes 3 issues in Ceilometer composable services

1) This patch fixes the hiera maps in the pacemaker ceilometer*
templates. These were lists and should be a map.

2) fixes a critical issue in ceilometer-base.yaml where the
password was incorrectly coded in the YAML using get_param on
a string which wasn't actually a parameter.

3) Fixes the ceilometer_coordination_url so that it uses a YAML anchor
as was implied instead of get_param on a string which wasn't a
parameter.

4) Fixes the default database connection to use mongodb and configured
in puppet-tripleo profile appropriately.

Co-Authored-By: Dan Prince <dprince@redhat.com>
Co-Authored-By: Pradeep Kilambi <pkilambi@redhat.com>
Closes-Bug: #1601844
Change-Id: Ia0a59121b9ffd5e07647f66137ce53870bc6b5d6

16 files changed:
environments/puppet-pacemaker.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/controller.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/services/ceilometer-agent-central.yaml [new file with mode: 0644]
puppet/services/ceilometer-agent-notification.yaml [new file with mode: 0644]
puppet/services/ceilometer-api.yaml [new file with mode: 0644]
puppet/services/ceilometer-base.yaml [new file with mode: 0644]
puppet/services/ceilometer-collector.yaml [new file with mode: 0644]
puppet/services/ceilometer-expirer.yaml [new file with mode: 0644]
puppet/services/pacemaker/ceilometer-agent-central.yaml [new file with mode: 0644]
puppet/services/pacemaker/ceilometer-agent-notification.yaml [new file with mode: 0644]
puppet/services/pacemaker/ceilometer-api.yaml [new file with mode: 0644]
puppet/services/pacemaker/ceilometer-collector.yaml [new file with mode: 0644]

index 8043ccb..cd97591 100644 (file)
@@ -40,3 +40,7 @@ resource_registry:
   OS::TripleO::Services::NovaScheduler: ../puppet/services/pacemaker/nova-scheduler.yaml
   OS::TripleO::Services::NovaConsoleauth: ../puppet/services/pacemaker/nova-consoleauth.yaml
   OS::TripleO::Services::NovaVncproxy: ../puppet/services/pacemaker/nova-vncproxy.yaml
+  OS::TripleO::Services::CeilometerApi: ../puppet/services/pacemaker/ceilometer-api.yaml
+  OS::TripleO::Services::CeilometerCollector: ../puppet/services/pacemaker/ceilometer-collector.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: ../puppet/services/pacemaker/ceilometer-agent-central.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: ../puppet/services/pacemaker/ceilometer-agent-notification.yaml
index 591b030..bc902a7 100644 (file)
@@ -173,6 +173,11 @@ resource_registry:
   OS::TripleO::Services::SwiftStorage: puppet/services/swift-storage.yaml
   OS::TripleO::Services::Snmp: puppet/services/snmp.yaml
   OS::TripleO::Services::Timezone: puppet/services/time/timezone.yaml
+  OS::TripleO::Services::CeilometerApi: puppet/services/ceilometer-api.yaml
+  OS::TripleO::Services::CeilometerCollector: puppet/services/ceilometer-collector.yaml
+  OS::TripleO::Services::CeilometerExpirer: puppet/services/ceilometer-expirer.yaml
+  OS::TripleO::Services::CeilometerAgentCentral: puppet/services/ceilometer-agent-central.yaml
+  OS::TripleO::Services::CeilometerAgentNotification: puppet/services/ceilometer-agent-notification.yaml
 
 parameter_defaults:
   EnablePackageInstall: false
index 11ea1bd..f3fed99 100644 (file)
@@ -20,24 +20,6 @@ parameters:
     description: The password for the aodh services.
     type: string
     hidden: true
-  CeilometerBackend:
-    default: 'mongodb'
-    description: The ceilometer backend type.
-    type: string
-  CeilometerMeteringSecret:
-    description: Secret shared by the ceilometer services.
-    type: string
-    hidden: true
-  CeilometerPassword:
-    description: The password for the ceilometer service account.
-    type: string
-    hidden: true
-  CeilometerMeterDispatcher:
-    default: 'database'
-    description: Dispatcher to process meter data
-    type: string
-    constraints:
-    - allowed_values: ['gnocchi', 'database']
   CinderEnableNfsBackend:
     default: false
     description: Whether to enable or not the NFS backend for Cinder
@@ -534,6 +516,11 @@ parameters:
       - OS::TripleO::Services::SwiftStorage
       - OS::TripleO::Services::Snmp
       - OS::TripleO::Services::Timezone
+      - OS::TripleO::Services::CeilometerApi
+      - OS::TripleO::Services::CeilometerCollector
+      - OS::TripleO::Services::CeilometerExpirer
+      - OS::TripleO::Services::CeilometerAgentCentral
+      - OS::TripleO::Services::CeilometerAgentNotification
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
                  for each service that should get installed on the Controllers.
@@ -793,10 +780,6 @@ resources:
         properties:
           AdminPassword: {get_param: AdminPassword}
           AodhPassword: {get_param: AodhPassword}
-          CeilometerBackend: {get_param: CeilometerBackend}
-          CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
-          CeilometerPassword: {get_param: CeilometerPassword}
-          CeilometerMeterDispatcher: {get_param: CeilometerMeterDispatcher}
           CloudDomain: {get_param: CloudDomain}
           ControlVirtualInterface: {get_param: ControlVirtualInterface}
           controllerExtraConfig: {get_param: controllerExtraConfig}
@@ -877,8 +860,6 @@ resources:
         properties:
           AdminPassword: {get_param: AdminPassword}
           CeilometerComputeAgent: {get_param: CeilometerComputeAgent}
-          CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
-          CeilometerPassword: {get_param: CeilometerPassword}
           CinderEnableNfsBackend: {get_param: CinderEnableNfsBackend}
           CinderEnableRbdBackend: {get_param: CinderEnableRbdBackend}
           Debug: {get_param: Debug}
index 101d971..26a59ca 100644 (file)
@@ -12,34 +12,6 @@ parameters:
     description: The password for the aodh services.
     type: string
     hidden: true
-  #TODO(composable Redis): Remove the Redis password param
-  #As is used by ceilometer
-  CeilometerBackend:
-    default: 'mongodb'
-    description: The ceilometer backend type.
-    type: string
-  CeilometerMeteringSecret:
-    description: Secret shared by the ceilometer services.
-    type: string
-    hidden: true
-  CeilometerPassword:
-    description: The password for the ceilometer service  and db account.
-    type: string
-    hidden: true
-  CeilometerStoreEvents:
-    default: false
-    description: Whether to store events in ceilometer.
-    type: boolean
-  CeilometerMeterDispatcher:
-    default: 'database'
-    description: Dispatcher to process meter data
-    type: string
-    constraints:
-    - allowed_values: ['gnocchi', 'database']
-  CeilometerWorkers:
-    default: 0
-    description: Number of workers for Ceilometer service.
-    type: number
   controllerExtraConfig:
     default: {}
     description: |
@@ -550,7 +522,6 @@ resources:
       server: {get_resource: Controller}
       input_values:
         bootstack_nodeid: {get_attr: [Controller, name]}
-        ceilometer_workers: {get_param: CeilometerWorkers}
         haproxy_log_address: {get_param: HAProxySyslogAddress}
         haproxy_stats_password: {get_param: HAProxyStatsPassword}
         haproxy_stats_user: {get_param: HAProxyStatsUser}
@@ -590,15 +561,10 @@ resources:
         neutron_admin_url: { get_param: [ EndpointMap, NeutronAdmin, uri ] }
         neutron_auth_url: { get_param: [ EndpointMap, KeystoneV3Admin, uri ] }
         nova_internal_url: { get_param: [ EndpointMap, NovaInternal, uri ] }
-        ceilometer_backend: {get_param: CeilometerBackend}
-        ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
-        ceilometer_password: {get_param: CeilometerPassword}
-        ceilometer_store_events: {get_param: CeilometerStoreEvents}
         aodh_password: {get_param: AodhPassword}
         aodh_internal_url: { get_param: [ EndpointMap, AodhInternal, uri ] }
         aodh_public_url: { get_param: [ EndpointMap, AodhPublic, uri ] }
         aodh_admin_url: { get_param: [ EndpointMap, AodhAdmin, uri ] }
-        ceilometer_meter_dispatcher: {get_param: CeilometerMeterDispatcher}
         gnocchi_password: {get_param: GnocchiPassword}
         gnocchi_backend: {get_param: GnocchiBackend}
         gnocchi_indexer_backend: {get_param: GnocchiIndexerBackend}
@@ -610,15 +576,6 @@ resources:
               - '@'
               - {get_param: RedisVirtualIPUri}
               - ':6379/'
-        ceilometer_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://ceilometer:'
-              - {get_param: CeilometerPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/ceilometer'
         gnocchi_dsn:
           list_join:
             - ''
@@ -640,10 +597,6 @@ resources:
         gnocchi_internal_url: {get_param: [EndpointMap, GnocchiInternal, uri]}
         gnocchi_public_url: { get_param: [ EndpointMap, GnocchiPublic, uri ] }
         gnocchi_admin_url: { get_param: [ EndpointMap, GnocchiAdmin, uri ] }
-        ceilometer_public_url: {get_param: [EndpointMap, CeilometerPublic, uri]}
-        ceilometer_internal_url: {get_param: [EndpointMap, CeilometerInternal, uri]}
-        ceilometer_admin_url: {get_param: [EndpointMap, CeilometerAdmin, uri]}
-        ceilometer_agent_auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix]}
         nova_enable_db_purge: {get_param: NovaEnableDBPurge}
         nova_ipv6: {get_param: NovaIPv6}
         corosync_ipv6: {get_param: CorosyncIPv6}
@@ -866,33 +819,7 @@ resources:
                 neutron::keystone::auth::region: {get_input: keystone_region}
 
                 # Ceilometer
-                ceilometer_backend: {get_input: ceilometer_backend}
-                ceilometer_mysql_conn_string: {get_input: ceilometer_dsn}
-                ceilometer::telemetry_secret: {get_input: ceilometer_metering_secret}
-                ceilometer::rabbit_userid: {get_input: rabbit_username}
-                ceilometer::rabbit_password: {get_input: rabbit_password}
-                ceilometer::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
-                ceilometer::rabbit_port: {get_input: rabbit_client_port}
-                ceilometer::debug: {get_input: debug}
                 ceilometer::api::host: {get_input: ceilometer_api_network}
-                ceilometer::api::keystone_password: {get_input: ceilometer_password}
-                ceilometer::api::auth_uri: {get_input: keystone_auth_uri}
-                ceilometer::api::identity_uri: {get_input: keystone_identity_uri}
-                ceilometer::agent::auth::auth_password: {get_input: ceilometer_password}
-                ceilometer::agent::auth::auth_url: {get_input: ceilometer_agent_auth_url}
-                ceilometer::agent::central::coordination_url: {get_input: ceilometer_coordination_url}
-                ceilometer::agent::notification::store_events: {get_input: ceilometer_store_events}
-                ceilometer::db::mysql::password: {get_input: ceilometer_password}
-                ceilometer::collector::meter_dispatcher: {get_input: ceilometer_meter_dispatcher}
-                ceilometer::dispatcher::gnocchi::url: {get_input: gnocchi_internal_url }
-                ceilometer::dispatcher::gnocchi::filter_project: 'service'
-                ceilometer::dispatcher::gnocchi::archive_policy: 'low'
-                ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
-                ceilometer::keystone::auth::public_url: {get_input: ceilometer_public_url }
-                ceilometer::keystone::auth::internal_url: {get_input: ceilometer_internal_url }
-                ceilometer::keystone::auth::admin_url: {get_input: ceilometer_admin_url }
-                ceilometer::keystone::auth::password: {get_input: ceilometer_password }
-                ceilometer::keystone::auth::region: {get_input: keystone_region}
                 snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
                 snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
 
index de84bcf..4f15bb7 100644 (file)
@@ -19,26 +19,6 @@ include ::tripleo::firewall
 $enable_load_balancer = hiera('enable_load_balancer', true)
 
 if hiera('step') >= 2 {
-
-  # 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 {
@@ -66,9 +46,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
 
 } #END STEP 2
@@ -87,31 +64,6 @@ if hiera('step') >= 4 {
   }
   include ::nova::config
 
-  # 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'),
index d7b1ce5..9a9d008 100644 (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'
 |> {
   hasrestart => true,
@@ -87,10 +86,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'
@@ -213,13 +208,6 @@ if hiera('step') >= 2 {
       user       => 'clustercheck@localhost',
     }
 
-    # Create all the database schemas
-    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'],
@@ -281,44 +269,6 @@ MYSQL_HOST=localhost\n",
 
   include ::nova::config
 
-  # 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' :
@@ -544,49 +494,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',
@@ -597,49 +510,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',
@@ -682,17 +552,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 :
diff --git a/puppet/services/ceilometer-agent-central.yaml b/puppet/services/ceilometer-agent-central.yaml
new file mode 100644 (file)
index 0000000..294e7dd
--- /dev/null
@@ -0,0 +1,43 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Central Agent service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  RedisPassword:
+    description: The password for the redis service account.
+    type: string
+    hidden: true
+  RedisVirtualIPUri:
+    type: string
+    default: ''
+
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Central Agent role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::agent::central::coordination_url:
+              list_join:
+                - ''
+                - - 'redis://:'
+                  - {get_param: RedisPassword}
+                  - '@'
+                  - {get_param: RedisVirtualIPUri}
+                  - ':6379/'
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::agent::central
diff --git a/puppet/services/ceilometer-agent-notification.yaml b/puppet/services/ceilometer-agent-notification.yaml
new file mode 100644 (file)
index 0000000..523dabb
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Notification Agent service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Notification Agent role.
+    value:
+      config_settings:
+        get_attr: [CeilometerServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::agent::notification
diff --git a/puppet/services/ceilometer-api.yaml b/puppet/services/ceilometer-api.yaml
new file mode 100644 (file)
index 0000000..06c2ed1
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer API service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer API role.
+    value:
+      config_settings:
+        get_attr: [CeilometerServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::api
diff --git a/puppet/services/ceilometer-base.yaml b/puppet/services/ceilometer-base.yaml
new file mode 100644 (file)
index 0000000..1dea785
--- /dev/null
@@ -0,0 +1,105 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  CeilometerBackend:
+    default: 'mongodb'
+    description: The ceilometer backend type.
+    type: string
+  CeilometerMeteringSecret:
+    description: Secret shared by the ceilometer services.
+    type: string
+    hidden: true
+  CeilometerPassword:
+    description: The password for the ceilometer service account.
+    type: string
+    hidden: true
+  CeilometerMeterDispatcher:
+    default: 'gnocchi'
+    description: Dispatcher to process meter data
+    type: string
+    constraints:
+    - allowed_values: ['gnocchi', 'database']
+  CeilometerWorkers:
+    default: 0
+    description: Number of workers for Ceilometer service.
+    type: number
+  CeilometerStoreEvents:
+    default: false
+    description: Whether to store events in ceilometer.
+    type: boolean
+  KeystoneRegion:
+    type: string
+    default: 'regionOne'
+    description: Keystone region for endpoint
+  RabbitPassword:
+    description: The password for RabbitMQ
+    type: string
+    hidden: true
+  RabbitUserName:
+    default: guest
+    description: The username for RabbitMQ
+    type: string
+  RabbitClientUseSSL:
+    default: false
+    description: >
+        Rabbit client subscriber parameter to specify
+        an SSL connection to the RabbitMQ host.
+    type: string
+  RabbitClientPort:
+    default: 5672
+    description: Set rabbit subscriber port, change this if using SSL
+    type: number
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer role.
+    value:
+      config_settings:
+        ceilometer::db::database_connection:
+          list_join:
+            - ''
+            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+            - - '://ceilometer:'
+              - {get_param: CeilometerPassword}
+              - '@'
+              - {get_param: [EndpointMap, MysqlInternal, host]}
+              - '/ceilometer'
+        ceilometer_backend: {get_param: CeilometerBackend}
+        ceilometer::metering_secret: {get_param: CeilometerMeteringSecret}
+        # we include db_sync class in puppet-tripleo
+        ceilometer::db::sync_db: false
+        ceilometer::api::keystone_password: {get_param: CeilometerPassword}
+        ceilometer::api::keystone_auth_uri: {get_param: [EndpointMap, KeystoneInternal, uri] }
+        ceilometer::api::keystone_identity_uri: { get_param: [EndpointMap, KeystoneAdmin, uri_no_suffix] }
+        ceilometer::agent::auth::auth_password: {get_param: CeilometerPassword}
+        ceilometer::agent::auth::auth_url: {get_param: [EndpointMap, KeystoneInternal, uri_no_suffix] }
+        ceilometer::agent::notification::store_events: {get_param: CeilometerStoreEvents}
+        ceilometer::db::mysql::password: {get_param: CeilometerPassword}
+        ceilometer::collector::meter_dispatcher: {get_param: CeilometerMeterDispatcher}
+        ceilometer::dispatcher::gnocchi::url: {get_param: [EndpointMap, GnocchiInternal, uri]}
+        ceilometer::dispatcher::gnocchi::filter_project: 'service'
+        ceilometer::dispatcher::gnocchi::archive_policy: 'low'
+        ceilometer::dispatcher::gnocchi::resources_definition_file: 'gnocchi_resources.yaml'
+        ceilometer::keystone::auth::public_url: {get_param: [EndpointMap, CeilometerPublic, uri]}
+        ceilometer::keystone::auth::internal_url: {get_param: [EndpointMap, CeilometerInternal, uri]}
+        ceilometer::keystone::auth::admin_url: {get_param: [EndpointMap, CeilometerAdmin, uri]}
+        ceilometer::keystone::auth::password: {get_param: CeilometerPassword}
+        ceilometer::keystone::auth::region: {get_param: KeystoneRegion}
+        ceilometer::rabbit_userid: {get_param: RabbitUserName}
+        ceilometer::rabbit_password: {get_param: RabbitPassword}
+        ceilometer::rabbit_use_ssl: {get_param: RabbitClientUseSSL}
+        ceilometer::rabbit_port: {get_param: RabbitClientPort}
+        ceilometer::db::mysql::user: ceilometer
+        ceilometer::db::mysql::host: {get_param: [EndpointMap, MysqlInternal, host]}
+        ceilometer::db::mysql::dbname: ceilometer
+        ceilometer::db::mysql::allowed_hosts:
+          - '%'
+          - "%{hiera('mysql_bind_host')}"
diff --git a/puppet/services/ceilometer-collector.yaml b/puppet/services/ceilometer-collector.yaml
new file mode 100644 (file)
index 0000000..2962721
--- /dev/null
@@ -0,0 +1,26 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Collector service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Collector role.
+    value:
+      config_settings:
+        get_attr: [CeilometerServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::collector
diff --git a/puppet/services/ceilometer-expirer.yaml b/puppet/services/ceilometer-expirer.yaml
new file mode 100644 (file)
index 0000000..796abe1
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Expirer service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+
+resources:
+  CeilometerServiceBase:
+    type: ./ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Expirer role.
+    value:
+      config_settings:
+        get_attr: [CeilometerServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::base::ceilometer::expirer
diff --git a/puppet/services/pacemaker/ceilometer-agent-central.yaml b/puppet/services/pacemaker/ceilometer-agent-central.yaml
new file mode 100644 (file)
index 0000000..8fb7bd2
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Central Agent service with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  CeilometerServiceBase:
+    type: ../ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Central Agent pacemaker role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::agent::central::manage_service: false
+            ceilometer::agent::central::enabled: false
+      step_config: |
+        include ::tripleo::profile::pacemaker::ceilometer::agent::central
diff --git a/puppet/services/pacemaker/ceilometer-agent-notification.yaml b/puppet/services/pacemaker/ceilometer-agent-notification.yaml
new file mode 100644 (file)
index 0000000..5470978
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Notification Agent service with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  CeilometerServiceBase:
+    type: ../ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Notification Agent pacemaker role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::agent::notification::manage_service: false
+            ceilometer::agent::notification::enabled: false
+      step_config: |
+        include ::tripleo::profile::pacemaker::ceilometer::agent::notification
diff --git a/puppet/services/pacemaker/ceilometer-api.yaml b/puppet/services/pacemaker/ceilometer-api.yaml
new file mode 100644 (file)
index 0000000..d45b157
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer API service with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  CeilometerServiceBase:
+    type: ../ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer API pacemaker role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::api::manage_service: false
+            ceilometer::api::enabled: false
+      step_config: |
+        include ::tripleo::profile::pacemaker::ceilometer::api
diff --git a/puppet/services/pacemaker/ceilometer-collector.yaml b/puppet/services/pacemaker/ceilometer-collector.yaml
new file mode 100644 (file)
index 0000000..487a557
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  OpenStack Ceilometer Collector service with Pacemaker configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+
+resources:
+  CeilometerServiceBase:
+    type: ../ceilometer-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Ceilometer Collector pacemaker role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [CeilometerServiceBase, role_data, config_settings]
+          - ceilometer::collector::manage_service: false
+            ceilometer::collector::enabled: false
+      step_config: |
+        include ::tripleo::profile::pacemaker::ceilometer::collector