Gnocchi composable roles
authorPradeep Kilambi <pkilambi@redhat.com>
Thu, 19 May 2016 02:26:22 +0000 (22:26 -0400)
committerCarlos Camacho <ccamacho@redhat.com>
Tue, 12 Jul 2016 12:14:24 +0000 (14:14 +0200)
Implements: blueprint composable-services-within-roles

Co-Authored-By: Juan Antonio Osorio Robles <jaosorior@redhat.com>
Co-Authored-By: Carlos Camacho <ccamacho@redhat.com>
Depends-On: Id728aae79442c45ab48fe0914c065f1807e8890d

Closes-Bug: #1601846
Change-Id: I40a3815923099d00a0f3fc1d88a942784e7c6fb9

15 files changed:
environments/puppet-pacemaker.yaml
overcloud-resource-registry-puppet.yaml
overcloud.yaml
puppet/ceph-cluster-config.yaml
puppet/controller.yaml
puppet/hieradata/database.yaml
puppet/manifests/overcloud_controller.pp
puppet/manifests/overcloud_controller_pacemaker.pp
puppet/services/gnocchi-api.yaml [new file with mode: 0644]
puppet/services/gnocchi-base.yaml [new file with mode: 0644]
puppet/services/gnocchi-metricd.yaml [new file with mode: 0644]
puppet/services/gnocchi-statsd.yaml [new file with mode: 0644]
puppet/services/pacemaker/gnocchi-api.yaml [new file with mode: 0644]
puppet/services/pacemaker/gnocchi-metricd.yaml [new file with mode: 0644]
puppet/services/pacemaker/gnocchi-statsd.yaml [new file with mode: 0644]

index cd97591..0d365fa 100644 (file)
@@ -44,3 +44,7 @@ resource_registry:
   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
+  #Gnocchi services
+  OS::TripleO::Services::GnocchiApi: ../puppet/services/pacemaker/gnocchi-api.yaml
+  OS::TripleO::Services::GnocchiMetricd: ../puppet/services/pacemaker/gnocchi-metricd.yaml
+  OS::TripleO::Services::GnocchiStatsd: ../puppet/services/pacemaker/gnocchi-statsd.yaml
index 379daab..b913511 100644 (file)
@@ -179,6 +179,10 @@ resource_registry:
   OS::TripleO::Services::CeilometerAgentCentral: puppet/services/ceilometer-agent-central.yaml
   OS::TripleO::Services::CeilometerAgentNotification: puppet/services/ceilometer-agent-notification.yaml
   OS::TripleO::Services::Horizon: puppet/services/horizon.yaml
+  #Gnocchi services
+  OS::TripleO::Services::GnocchiApi: puppet/services/gnocchi-api.yaml
+  OS::TripleO::Services::GnocchiMetricd: puppet/services/gnocchi-metricd.yaml
+  OS::TripleO::Services::GnocchiStatsd: puppet/services/gnocchi-statsd.yaml
 
 parameter_defaults:
   EnablePackageInstall: false
index 1e56126..84d6592 100644 (file)
@@ -296,19 +296,6 @@ parameters:
           ]
         }
     type: json
-  GnocchiBackend:
-    default: file
-    description: The short name of the Gnocchi backend to use. Should be one
-      of swift, rbd or file
-    type: string
-    constraints:
-    - allowed_values: ['swift', 'file', 'rbd']
-  GnocchiIndexerBackend:
-    default: 'mysql'
-    description: The short name of the Gnocchi indexer backend to use.
-    type: string
-  GnocchiPassword:
-    description: The password for the gnocchi service account.
     type: string
     hidden: true
   InstanceNameTemplate:
@@ -509,6 +496,9 @@ parameters:
       - OS::TripleO::Services::CeilometerAgentCentral
       - OS::TripleO::Services::CeilometerAgentNotification
       - OS::TripleO::Services::Horizon
+      - OS::TripleO::Services::GnocchiApi
+      - OS::TripleO::Services::GnocchiMetricd
+      - OS::TripleO::Services::GnocchiStatsd
 
     description: A list of service resources (configured in the Heat
                  resource_registry) which represent nested stacks
@@ -782,9 +772,6 @@ resources:
           ExtraConfig: {get_param: ExtraConfig}
           FencingConfig: {get_param: FencingConfig}
           Flavor: {get_param: OvercloudControlFlavor}
-          GnocchiPassword: {get_param: GnocchiPassword}
-          GnocchiBackend: {get_param: GnocchiBackend}
-          GnocchiIndexerBackend: {get_param: GnocchiIndexerBackend}
           HAProxySyslogAddress: {get_param: HAProxySyslogAddress}
           HeatAuthEncryptionKey: {get_resource: HeatAuthEncryptionKey}
           HorizonSecret: {get_resource: HorizonSecret}
index 2e32998..db1fd09 100644 (file)
@@ -5,9 +5,6 @@ parameters:
   NovaRbdPoolName:
     default: vms
     type: string
-  GnocchiRbdPoolName:
-    default: metrics
-    type: string
   CephClientUserName:
     default: openstack
     type: string
@@ -23,21 +20,12 @@ resources:
             ceph_cluster:
               mapped_data:
                 nova::compute::rbd::libvirt_images_rbd_pool: {get_param: NovaRbdPoolName}
-                gnocchi::storage::ceph::ceph_pool: {get_param: GnocchiRbdPoolName}
-                gnocchi::storage::ceph::ceph_username: {get_param: CephClientUserName}
                 nova::compute::rbd::libvirt_rbd_user: {get_param: CephClientUserName}
                 nova::compute::rbd::rbd_keyring:
                   list_join:
                   - '.'
                   - - 'client'
                     - {get_param: CephClientUserName}
-                gnocchi::storage::ceph::ceph_keyring:
-                  list_join:
-                  - '.'
-                  - - '/etc/ceph/ceph'
-                    - 'client'
-                    - {get_param: CephClientUserName}
-                    - 'keyring'
 
 outputs:
   config_id:
index 79b141d..d8bc95e 100644 (file)
@@ -98,21 +98,6 @@ parameters:
     type: string
     constraints:
       - custom_constraint: nova.flavor
-  GnocchiBackend:
-    default: file
-    description: The short name of the Gnocchi backend to use. Should be one
-      of swift, rbd, or file
-    type: string
-    constraints:
-    - allowed_values: ['swift', 'file', 'rbd']
-  GnocchiIndexerBackend:
-    default: 'mysql'
-    description: The short name of the Gnocchi indexer backend to use.
-    type: string
-  GnocchiPassword:
-    description: The password for the gnocchi service and db account.
-    type: string
-    hidden: true
   HAProxyStatsPassword:
     description: Password for HAProxy stats endpoint
     type: string
@@ -557,9 +542,6 @@ resources:
         aodh_internal_url: { get_param: [ EndpointMap, AodhInternal, uri ] }
         aodh_public_url: { get_param: [ EndpointMap, AodhPublic, uri ] }
         aodh_admin_url: { get_param: [ EndpointMap, AodhAdmin, uri ] }
-        gnocchi_password: {get_param: GnocchiPassword}
-        gnocchi_backend: {get_param: GnocchiBackend}
-        gnocchi_indexer_backend: {get_param: GnocchiIndexerBackend}
         ceilometer_coordination_url:
           list_join:
             - ''
@@ -568,15 +550,6 @@ resources:
               - '@'
               - {get_param: RedisVirtualIPUri}
               - ':6379/'
-        gnocchi_dsn:
-          list_join:
-            - ''
-            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
-              - '://gnocchi:'
-              - {get_param: GnocchiPassword}
-              - '@'
-              - {get_param: [EndpointMap, MysqlInternal, host]}
-              - '/gnocchi'
         aodh_dsn:
           list_join:
             - ''
@@ -840,24 +813,14 @@ resources:
                 aodh::keystone::auth::region: {get_input: keystone_region}
 
                 # Gnocchi
-                gnocchi_backend: {get_input: gnocchi_backend}
-                gnocchi_indexer_backend: {get_input: gnocchi_indexer_backend}
-                gnocchi_mysql_conn_string: {get_input: gnocchi_dsn}
-                gnocchi::debug: {get_input: debug}
-                gnocchi::wsgi::apache::ssl: false
                 gnocchi::wsgi::apache::bind_host: {get_input: gnocchi_api_network}
-                gnocchi::api::service_name: 'httpd'
                 gnocchi::api::host: {get_input: gnocchi_api_network}
-                gnocchi::api::keystone_password: {get_input: gnocchi_password}
                 gnocchi::api::keystone_auth_uri: {get_input: keystone_auth_uri}
                 gnocchi::api::keystone_identity_uri: {get_input: keystone_identity_uri}
-                gnocchi::db::mysql::password: {get_input: gnocchi_password}
                 gnocchi::storage::swift::swift_authurl: {get_input: keystone_auth_uri}
-                gnocchi::storage::swift::swift_key: {get_input: gnocchi_password}
                 gnocchi::keystone::auth::public_url: {get_input: gnocchi_public_url }
                 gnocchi::keystone::auth::internal_url: {get_input: gnocchi_internal_url }
                 gnocchi::keystone::auth::admin_url: {get_input: gnocchi_admin_url }
-                gnocchi::keystone::auth::password: {get_input: gnocchi_password }
                 gnocchi::keystone::auth::region: {get_input: keystone_region}
 
                 # Nova
index 9b2ea4f..c827702 100644 (file)
@@ -21,14 +21,6 @@ ceilometer::db::mysql::allowed_hosts:
   - '%'
   - "%{hiera('mysql_bind_host')}"
 
-# Gnocchi
-gnocchi::db::mysql::user: gnocchi
-gnocchi::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
-gnocchi::db::mysql::dbname: gnocchi
-gnocchi::db::mysql::allowed_hosts:
-  - '%'
-  - "%{hiera('mysql_bind_host')}"
-
 # Aodh
 aodh::db::mysql::user: aodh
 aodh::db::mysql::host: "%{hiera('mysql_virtual_ip')}"
index 9cdbda0..bc9a42a 100644 (file)
@@ -43,9 +43,6 @@ if hiera('step') >= 2 {
 
   # FIXME: this should only occur on the bootstrap host (ditto for db syncs)
   # Create all the database schemas
-  if downcase(hiera('gnocchi_indexer_backend')) == 'mysql' {
-    include ::gnocchi::db::mysql
-  }
   include ::aodh::db::mysql
 
 } #END STEP 2
@@ -77,26 +74,6 @@ if hiera('step') >= 4 {
   include ::aodh::listener
   include ::aodh::client
 
-  # Gnocchi
-  $gnocchi_database_connection = hiera('gnocchi_mysql_conn_string')
-  class { '::gnocchi':
-    database_connection => $gnocchi_database_connection,
-  }
-  include ::gnocchi::api
-  include ::gnocchi::wsgi::apache
-  include ::gnocchi::client
-  include ::gnocchi::db::sync
-  include ::gnocchi::storage
-  include ::gnocchi::metricd
-  include ::gnocchi::statsd
-  $gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift'))
-  case $gnocchi_backend {
-      'swift': { include ::gnocchi::storage::swift }
-      'file': { include ::gnocchi::storage::file }
-      'rbd': { include ::gnocchi::storage::ceph }
-      default: { fail('Unrecognized gnocchi_backend parameter.') }
-  }
-
   hiera_include('controller_classes')
 
 } #END STEP 4
index cfa693b..aae5a09 100644 (file)
@@ -208,12 +208,6 @@ if hiera('step') >= 2 {
       user       => 'clustercheck@localhost',
     }
 
-    if downcase(hiera('gnocchi_indexer_backend')) == 'mysql' {
-      class { '::gnocchi::db::mysql':
-        require => Exec['galera-ready'],
-      }
-    }
-
     class { '::aodh::db::mysql':
         require => Exec['galera-ready'],
     }
@@ -295,40 +289,6 @@ MYSQL_HOST=localhost\n",
     enabled        => false,
   }
 
-  # Gnocchi
-  $gnocchi_database_connection = hiera('gnocchi_mysql_conn_string')
-  include ::gnocchi::client
-  if $sync_db {
-    include ::gnocchi::db::sync
-  }
-  include ::gnocchi::storage
-  $gnocchi_backend = downcase(hiera('gnocchi_backend', 'swift'))
-  case $gnocchi_backend {
-      'swift': { include ::gnocchi::storage::swift }
-      'file': { include ::gnocchi::storage::file }
-      'rbd': { include ::gnocchi::storage::ceph }
-      default: { fail('Unrecognized gnocchi_backend parameter.') }
-  }
-  class { '::gnocchi':
-    database_connection => $gnocchi_database_connection,
-  }
-  class { '::gnocchi::api' :
-    manage_service => false,
-    enabled        => false,
-    service_name   => 'httpd',
-  }
-  class { '::gnocchi::wsgi::apache' :
-    ssl => false,
-  }
-  class { '::gnocchi::metricd' :
-    manage_service => false,
-    enabled        => false,
-  }
-  class { '::gnocchi::statsd' :
-    manage_service => false,
-    enabled        => false,
-  }
-
   hiera_include('controller_classes')
 
 } #END STEP 4
@@ -526,30 +486,6 @@ password=\"${mysql_root_password}\"",
                   Pacemaker::Resource::Service[$::aodh::params::listener_service_name]],
     }
 
-    # gnocchi
-    pacemaker::resource::service { $::gnocchi::params::metricd_service_name :
-      clone_params => 'interleave=true',
-    }
-    pacemaker::resource::service { $::gnocchi::params::statsd_service_name :
-      clone_params => 'interleave=true',
-    }
-    pacemaker::constraint::base { 'gnocchi-metricd-then-gnocchi-statsd-constraint':
-      constraint_type => 'order',
-      first_resource  => "${::gnocchi::params::metricd_service_name}-clone",
-      second_resource => "${::gnocchi::params::statsd_service_name}-clone",
-      first_action    => 'start',
-      second_action   => 'start',
-      require         => [Pacemaker::Resource::Service[$::gnocchi::params::metricd_service_name],
-                          Pacemaker::Resource::Service[$::gnocchi::params::statsd_service_name]],
-    }
-    pacemaker::constraint::colocation { 'gnocchi-statsd-with-metricd-colocation':
-      source  => "${::gnocchi::params::statsd_service_name}-clone",
-      target  => "${::gnocchi::params::metricd_service_name}-clone",
-      score   => 'INFINITY',
-      require => [Pacemaker::Resource::Service[$::gnocchi::params::metricd_service_name],
-                  Pacemaker::Resource::Service[$::gnocchi::params::statsd_service_name]],
-    }
-
     # Horizon and Keystone
     pacemaker::resource::service { $::apache::params::service_name:
       clone_params     => 'interleave=true',
diff --git a/puppet/services/gnocchi-api.yaml b/puppet/services/gnocchi-api.yaml
new file mode 100644 (file)
index 0000000..a7b203b
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ./gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::base::gnocchi::api
diff --git a/puppet/services/gnocchi-base.yaml b/puppet/services/gnocchi-base.yaml
new file mode 100644 (file)
index 0000000..d420103
--- /dev/null
@@ -0,0 +1,91 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi service configured with Puppet
+
+parameters:
+  EndpointMap:
+    default: {}
+    description: Mapping of service endpoint -> protocol. Typically set
+                 via parameter_defaults in the resource registry.
+    type: json
+  GnocchiBackend:
+    default: file
+    description: The short name of the Gnocchi backend to use. Should be one
+      of swift, rbd, or file
+    type: string
+    constraints:
+    - allowed_values: ['swift', 'file', 'rbd']
+  GnocchiIndexerBackend:
+    default: 'mysql'
+    description: The short name of the Gnocchi indexer backend to use.
+    type: string
+  GnocchiPassword:
+    description: The password for the gnocchi service and db account.
+    type: string
+    hidden: true
+  GnocchiRbdPoolName:
+    default: metrics
+    type: string
+  CephClientUserName:
+    default: openstack
+    type: string
+
+outputs:
+  aux_parameters:
+    description: Additional parameters referenced outside the base file
+    value:
+      gnocchi_indexer_backend: {get_param: GnocchiIndexerBackend}
+  role_data:
+    description: Shared role data for the Heat services.
+    value:
+      config_settings:
+        #Gnocchi engine
+        gnocchi::debug: {get_input: debug}
+        gnocchi::db::database_connection:
+          list_join:
+            - ''
+            - - {get_param: [EndpointMap, MysqlInternal, protocol]}
+              - '://gnocchi:'
+              - {get_param: GnocchiPassword}
+              - '@'
+              - {get_param: [EndpointMap, MysqlInternal, host]}
+              - '/gnocchi'
+        gnocchi::keystone::auth::region: 'regionOne'
+        gnocchi::keystone::auth::tenant: 'service'
+        gnocchi::keystone::auth::password: {get_param: GnocchiPassword}
+        gnocchi::db::mysql::password: {get_param: GnocchiPassword}
+        gnocchi::db::sync::extra_opts: '--skip-storage'
+        #Gnocchi API
+        tripleo::profile::base::gnocchi::api::gnocchi_backend: {get_param: GnocchiBackend}
+        gnocchi::api::manage_service: false
+        gnocchi::api::enabled: true
+        gnocchi::api::service_name: 'httpd'
+        gnocchi::api::keystone_tenant: 'service'
+        gnocchi::api::keystone_password: {get_param: GnocchiPassword}
+        gnocchi::wsgi::apache::ssl: false
+        gnocchi::storage::swift::swift_user: 'service:gnocchi'
+        gnocchi::storage::swift::swift_auth_version: 2
+        gnocchi::storage::swift::swift_key: {get_param: GnocchiPassword}
+        gnocchi::storage::ceph::ceph_pool: {get_param: GnocchiRbdPoolName}
+        gnocchi::storage::ceph::ceph_username: {get_param: CephClientUserName}
+        gnocchi::storage::ceph::ceph_keyring:
+          list_join:
+          - '.'
+          - - '/etc/ceph/ceph/'
+            - 'client/'
+            - {get_param: CephClientUserName}
+            - '/keyring'
+        #Gnocchi statsd
+        gnocchi::statsd::manage_service: false
+        gnocchi::statsd::resource_id: '0a8b55df-f90f-491c-8cb9-7cdecec6fc26'
+        gnocchi::statsd::user_id: '27c0d3f8-e7ee-42f0-8317-72237d1c5ae3'
+        gnocchi::statsd::project_id: '6c38cd8d-099a-4cb2-aecf-17be688e8616'
+        gnocchi::statsd::flush_delay: 10
+        gnocchi::statsd::archive_policy_name: 'low'
+        gnocchi::db::mysql::user: gnocchi
+        gnocchi::db::mysql::host: {get_param: [EndpointMap, MysqlVirtual, host]}
+        gnocchi::db::mysql::dbname: gnocchi
+        gnocchi::db::mysql::allowed_hosts:
+          - '%'
+          - "%{hiera('mysql_bind_host')}"
diff --git a/puppet/services/gnocchi-metricd.yaml b/puppet/services/gnocchi-metricd.yaml
new file mode 100644 (file)
index 0000000..bafc8dd
--- /dev/null
@@ -0,0 +1,28 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ./gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+          - gnocchi::metricd::manage_service: false
+      step_config: |
+        include ::tripleo::profile::base::gnocchi::metricd
diff --git a/puppet/services/gnocchi-statsd.yaml b/puppet/services/gnocchi-statsd.yaml
new file mode 100644 (file)
index 0000000..25abf49
--- /dev/null
@@ -0,0 +1,28 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ./gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+          - gnocchi::statsd::manage_service: false
+      step_config: |
+        include ::tripleo::profile::base::gnocchi::statsd
diff --git a/puppet/services/pacemaker/gnocchi-api.yaml b/puppet/services/pacemaker/gnocchi-api.yaml
new file mode 100644 (file)
index 0000000..ac5355d
--- /dev/null
@@ -0,0 +1,27 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ../gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+      step_config: |
+        include ::tripleo::profile::pacemaker::gnocchi::api
diff --git a/puppet/services/pacemaker/gnocchi-metricd.yaml b/puppet/services/pacemaker/gnocchi-metricd.yaml
new file mode 100644 (file)
index 0000000..8a5562e
--- /dev/null
@@ -0,0 +1,30 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ../gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+          - gnocchi::metricd::manage_service: false
+            tripleo::profile::pacemaker::gnocchi::gnocchi_indexer_backend: {get_attr: [GnocchiServiceBase, aux_parameters, gnocchi_indexer_backend]}
+
+      step_config: |
+        include ::tripleo::profile::pacemaker::gnocchi::metricd
diff --git a/puppet/services/pacemaker/gnocchi-statsd.yaml b/puppet/services/pacemaker/gnocchi-statsd.yaml
new file mode 100644 (file)
index 0000000..8625b4e
--- /dev/null
@@ -0,0 +1,29 @@
+heat_template_version: 2016-04-08
+
+description: >
+  Gnocchi 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:
+  GnocchiServiceBase:
+    type: ../gnocchi-base.yaml
+    properties:
+      EndpointMap: {get_param: EndpointMap}
+
+outputs:
+  role_data:
+    description: Role data for the Gnocchi role.
+    value:
+      config_settings:
+        map_merge:
+          - get_attr: [GnocchiServiceBase, role_data, config_settings]
+          - gnocchi::statsd::manage_service: false
+            tripleo::profile::pacemaker::gnocchi::gnocchi_indexer_backend: {get_attr: [GnocchiServiceBase, aux_parameters, gnocchi_indexer_backend]}
+      step_config: |
+        include ::tripleo::profile::pacemaker::gnocchi::statsd