Gnocchi composable roles

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
This commit is contained in:
Pradeep Kilambi 2016-05-18 22:26:22 -04:00 committed by Carlos Camacho
parent c4f27255c5
commit 0415a2a82b
15 changed files with 271 additions and 160 deletions

View 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

View 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

View 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}

View 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:

View 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

View 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')}"

View 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

View 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',

View File

@ -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

View File

@ -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')}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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