Deploy Aodh services, replacing Ceilometer Alarm

Ceilometer Alarm is deprecated in Liberty by Aodh.

This patch:
* manage Aodh Keystone resources
* deploy Aodh API under WSGI, Notifier, Listener and Evaluator
* manage new parameters to customize Aodh deployment
* uses ceilometer DB for the upgrade path
* pacemaker config

Depends-On: I9e34485285829884d9c954b804e3bdd5d6e31635
Depends-On: I891985da9248a88c6ce2df1dd186881f582605ee
Depends-On: Ied8ba5985f43a5c5b3be5b35a091aef6ed86572f

Co-Authored-By: Pradeep Kilambi <pkilambi@redhat.com>

Change-Id: I58d419173e80d2462accf7324c987c71420fd5f6
changes/08/241408/50
Emilien Macchi 7 years ago committed by Pradeep Kilambi
parent df0c33a00b
commit f72aed8559
  1. 3
      environments/enable-tls.yaml
  2. 9
      extraconfig/tasks/yum_update.sh
  3. 9
      network/endpoints/endpoint_data.yaml
  4. 118
      network/endpoints/endpoint_map.yaml
  5. 14
      overcloud.yaml
  6. 11
      puppet/all-nodes-config.yaml
  7. 28
      puppet/controller.yaml
  8. 3
      puppet/hieradata/common.yaml
  9. 6
      puppet/hieradata/controller.yaml
  10. 16
      puppet/manifests/overcloud_controller.pp
  11. 94
      puppet/manifests/overcloud_controller_pacemaker.pp
  12. 1
      puppet/vip-config.yaml

@ -5,6 +5,9 @@ parameter_defaults:
SSLKey: |
The contents of the private key go here
EndpointMap:
AodhAdmin: {protocol: 'http', port: '8042', host: 'IP_ADDRESS'}
AodhInternal: {protocol: 'http', port: '8042', host: 'IP_ADDRESS'}
AodhPublic: {protocol: 'https', port: '13042', host: 'CLOUDNAME'}
CeilometerAdmin: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
CeilometerInternal: {protocol: 'http', port: '8777', host: 'IP_ADDRESS'}
CeilometerPublic: {protocol: 'https', port: '13777', host: 'CLOUDNAME'}

@ -53,12 +53,14 @@ neutron-l3-agent
neutron-metadata-agent
neutron-openvswitch-agent
neutron-server
openstack-ceilometer-alarm-evaluator
openstack-ceilometer-alarm-notifier
openstack-ceilometer-api
openstack-ceilometer-central
openstack-ceilometer-collector
openstack-ceilometer-notification
openstack-aodh-api
openstack-aodh-evaluator
openstack-aodh-notifier
openstack-aodh-listener
openstack-cinder-api
openstack-cinder-scheduler
openstack-cinder-volume
@ -107,6 +109,9 @@ openstack-nova-scheduler"
pcs -f $pacemaker_dumpfile constraint order promote redis-master then start openstack-ceilometer-central-clone require-all=false
fi
if ! pcs constraint order show | grep "promote redis-master then start openstack-aodh-evaluator-clone"; then
pcs -f $pacemaker_dumpfile constraint order promote redis-master then start openstack-aodh-evaluator-clone require-all=false
fi
# ensure neutron constraints https://review.openstack.org/#/c/229466
# remove ovs-cleanup after server and add openvswitch-agent instead
if pcs constraint order show | grep "start neutron-server-clone then start neutron-ovs-cleanup-clone"; then

@ -1,6 +1,15 @@
# Data in this file is used to generate the endpoint_map.yaml template.
# Run the script build_endpoint_map.py to regenerate the file.
Aodh:
Internal:
vip_param: AodhApi
Public:
vip_param: Public
Admin:
vip_param: AodhApi
port: 8042
Ceilometer:
Internal:
vip_param: CeilometerApi

@ -5,6 +5,7 @@
heat_template_version: '2015-04-30'
description: A map of OpenStack endpoints.
parameters:
AodhApiVirtualIP: {type: string, default: ''}
CeilometerApiVirtualIP: {type: string, default: ''}
CinderApiVirtualIP: {type: string, default: ''}
GlanceApiVirtualIP: {type: string, default: ''}
@ -21,6 +22,9 @@ parameters:
EndpointMap:
type: json
default:
AodhAdmin: {protocol: http, port: '8042', host: IP_ADDRESS}
AodhInternal: {protocol: http, port: '8042', host: IP_ADDRESS}
AodhPublic: {protocol: http, port: '8042', host: IP_ADDRESS}
CeilometerAdmin: {protocol: http, port: '8777', host: IP_ADDRESS}
CeilometerInternal: {protocol: http, port: '8777', host: IP_ADDRESS}
CeilometerPublic: {protocol: http, port: '8777', host: IP_ADDRESS}
@ -68,6 +72,120 @@ parameters:
outputs:
endpoint_map:
value:
AodhAdmin:
host:
str_replace:
template:
get_param: [EndpointMap, AodhAdmin, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
port:
get_param: [EndpointMap, AodhAdmin, port]
protocol:
get_param: [EndpointMap, AodhAdmin, protocol]
uri:
list_join:
- ''
- - get_param: [EndpointMap, AodhAdmin, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhAdmin, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
- ':'
- get_param: [EndpointMap, AodhAdmin, port]
uri_no_suffix:
list_join:
- ''
- - get_param: [EndpointMap, AodhAdmin, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhAdmin, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
- ':'
- get_param: [EndpointMap, AodhAdmin, port]
AodhInternal:
host:
str_replace:
template:
get_param: [EndpointMap, AodhInternal, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
port:
get_param: [EndpointMap, AodhInternal, port]
protocol:
get_param: [EndpointMap, AodhInternal, protocol]
uri:
list_join:
- ''
- - get_param: [EndpointMap, AodhInternal, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhInternal, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
- ':'
- get_param: [EndpointMap, AodhInternal, port]
uri_no_suffix:
list_join:
- ''
- - get_param: [EndpointMap, AodhInternal, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhInternal, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: AodhApiVirtualIP}
- ':'
- get_param: [EndpointMap, AodhInternal, port]
AodhPublic:
host:
str_replace:
template:
get_param: [EndpointMap, AodhPublic, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: PublicVirtualIP}
port:
get_param: [EndpointMap, AodhPublic, port]
protocol:
get_param: [EndpointMap, AodhPublic, protocol]
uri:
list_join:
- ''
- - get_param: [EndpointMap, AodhPublic, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhPublic, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: PublicVirtualIP}
- ':'
- get_param: [EndpointMap, AodhPublic, port]
uri_no_suffix:
list_join:
- ''
- - get_param: [EndpointMap, AodhPublic, protocol]
- ://
- str_replace:
template:
get_param: [EndpointMap, AodhPublic, host]
params:
CLOUDNAME: {get_param: CloudName}
IP_ADDRESS: {get_param: PublicVirtualIP}
- ':'
- get_param: [EndpointMap, AodhPublic, port]
CeilometerAdmin:
host:
str_replace:

@ -16,6 +16,11 @@ parameters:
description: The password for the keystone admin account, used for monitoring, querying neutron etc.
type: string
hidden: true
AodhPassword:
default: unset
description: The password for the aodh services.
type: string
hidden: true
CeilometerBackend:
default: 'mongodb'
description: The ceilometer backend type.
@ -653,6 +658,7 @@ parameters:
default:
NeutronTenantNetwork: tenant
CeilometerApiNetwork: internal_api
AodhApiNetwork: internal_api
MongoDbNetwork: internal_api
CinderApiNetwork: internal_api
CinderIscsiNetwork: storage
@ -852,6 +858,7 @@ resources:
properties:
CloudName: {get_param: CloudName}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
GlanceRegistryVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceRegistryNetwork]}]}
@ -876,6 +883,7 @@ resources:
properties:
AdminPassword: {get_param: AdminPassword}
AdminToken: {get_param: AdminToken}
AodhPassword: {get_param: AodhPassword}
CeilometerBackend: {get_param: CeilometerBackend}
CeilometerMeteringSecret: {get_param: CeilometerMeteringSecret}
CeilometerPassword: {get_param: CeilometerPassword}
@ -984,6 +992,7 @@ resources:
ServiceNetMap: {get_param: ServiceNetMap}
EndpointMap: {get_attr: [EndpointMap, endpoint_map]}
CeilometerApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
AodhApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CinderApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CinderApiNetwork]}]}
HeatApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
GlanceApiVirtualIP: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
@ -1215,6 +1224,7 @@ resources:
heat_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
swift_proxy_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, SwiftProxyNetwork]}]}
ceilometer_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
aodh_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
nova_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
glance_api_node_ips: {get_attr: [ControllerIpListMap, net_ip_map, {get_param: [ServiceNetMap, GlanceApiNetwork]}]}
@ -1331,6 +1341,7 @@ resources:
nova_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
ceilometer_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
aodh_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
heat_api_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HeatApiNetwork]}]}
horizon_vip: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
redis_vip: {get_attr: [RedisVirtualIP, ip_address]}
@ -1607,6 +1618,9 @@ outputs:
PublicVip:
description: Controller VIP for public API endpoints
value: {get_attr: [VipMap, net_ip_map, external]}
AodhInternalVip:
description: VIP for Aodh API internal endpoint
value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
CeilometerInternalVip:
description: VIP for Ceilometer API internal endpoint
value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}

@ -34,6 +34,8 @@ parameters:
type: comma_delimited_list
ceilometer_api_node_ips:
type: comma_delimited_list
aodh_api_node_ips:
type: comma_delimited_list
nova_api_node_ips:
type: comma_delimited_list
nova_metadata_node_ips:
@ -179,6 +181,14 @@ resources:
list_join:
- "','"
- {get_param: ceilometer_api_node_ips}
aodh_api_node_ips:
str_replace:
template: "['SERVERS_LIST']"
params:
SERVERS_LIST:
list_join:
- "','"
- {get_param: aodh_api_node_ips}
nova_api_node_ips:
str_replace:
template: "['SERVERS_LIST']"
@ -264,6 +274,7 @@ resources:
# NOTE(gfidente): interpolation with %{} in the
# hieradata file can't be used as it returns string
ceilometer::rabbit_hosts: *rabbit_nodes_array
aodh::rabbit_hosts: *rabbit_nodes_array
cinder::rabbit_hosts: *rabbit_nodes_array
heat::rabbit_hosts: *rabbit_nodes_array
neutron::rabbit_hosts: *rabbit_nodes_array

@ -17,6 +17,14 @@ parameters:
description: The keystone auth secret and db password.
type: string
hidden: true
AodhApiVirtualIP:
type: string
default: ''
AodhPassword:
default: unset
description: The password for the aodh services.
type: string
hidden: true
CeilometerApiVirtualIP:
type: string
default: ''
@ -1105,6 +1113,7 @@ resources:
ceilometer_backend: {get_param: CeilometerBackend}
ceilometer_metering_secret: {get_param: CeilometerMeteringSecret}
ceilometer_password: {get_param: CeilometerPassword}
aodh_password: {get_param: AodhPassword}
ceilometer_coordination_url:
list_join:
- ''
@ -1194,6 +1203,7 @@ resources:
neutron_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronApiNetwork]}]}
neutron_local_ip: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NeutronTenantNetwork]}]}
ceilometer_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]}
aodh_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, AodhApiNetwork]}]}
nova_api_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaApiNetwork]}]}
nova_metadata_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, NovaMetadataNetwork]}]}
horizon_network: {get_attr: [NetIpMap, net_ip_map, {get_param: [ServiceNetMap, HorizonNetwork]}]}
@ -1495,6 +1505,24 @@ resources:
snmpd_readonly_user_name: {get_input: snmpd_readonly_user_name}
snmpd_readonly_user_password: {get_input: snmpd_readonly_user_password}
# Aodh
aodh::rabbit_userid: {get_input: rabbit_username}
aodh::rabbit_password: {get_input: rabbit_password}
aodh::rabbit_use_ssl: {get_input: rabbit_client_use_ssl}
aodh::rabbit_port: {get_input: rabbit_client_port}
aodh::debug: {get_input: debug}
aodh::wsgi::apache::ssl: false
aodh::wsgi::apache::bind_host: {get_input: aodh_api_network}
aodh::api::service_name: 'httpd'
aodh::api::host: {get_input: aodh_api_network}
aodh::api::keystone_password: {get_input: aodh_password}
aodh::api::keystone_auth_uri: {get_input: keystone_auth_uri}
aodh::api::keystone_identity_uri: {get_input: keystone_identity_uri}
aodh::auth::auth_password: {get_input: aodh_password}
aodh::db::mysql::password: {get_input: aodh_password}
# for a migration path from ceilometer-alarm to aodh, we use the same database & coordination
aodh::evaluator::coordination_url: {get_input: ceilometer_coordination_url}
# Nova
nova::rabbit_userid: {get_input: rabbit_username}
nova::rabbit_password: {get_input: rabbit_password}

@ -5,6 +5,9 @@ ssh::server::storeconfigs_enabled: false
ceilometer::agent::auth::auth_region: 'regionOne'
ceilometer::agent::auth::auth_tenant_name: 'service'
aodh::auth::auth_region: 'regionOne'
aodh::auth::auth_tenant_name: 'service'
nova::api::admin_tenant_name: 'service'
nova::network::neutron::neutron_project_name: 'service'
nova::network::neutron::neutron_username: 'neutron'

@ -31,6 +31,7 @@ redis::sentinel::notification_script: '/usr/local/bin/redis-notifications.sh'
# service tenant
glance::api::keystone_tenant: 'service'
aodh::api::keystone_tenant: 'service'
glance::registry::keystone_tenant: 'service'
neutron::server::auth_tenant: 'service'
neutron::agents::metadata::auth_tenant: 'service'
@ -142,6 +143,7 @@ tripleo::loadbalancer::redis: true
tripleo::loadbalancer::sahara: true
tripleo::loadbalancer::swift_proxy_server: true
tripleo::loadbalancer::ceilometer: true
tripleo::loadbalancer::aodh: true
tripleo::loadbalancer::heat_api: true
tripleo::loadbalancer::heat_cloudwatch: true
tripleo::loadbalancer::heat_cfn: true
@ -254,3 +256,7 @@ tripleo::firewall::firewall_rules:
'127 snmp':
port: 161
proto: 'udp'
'128 aodh':
port:
- 8042
- 13042

@ -113,6 +113,7 @@ if hiera('step') >= 2 {
include ::sahara::db::mysql
if downcase(hiera('ceilometer_backend')) == 'mysql' {
include ::ceilometer::db::mysql
include ::aodh::db::mysql
}
$rabbit_nodes = hiera('rabbit_node_ips')
@ -571,6 +572,21 @@ if hiera('step') >= 3 {
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 => $ceilometer_database_connection,
}
include ::aodh::db::sync
# To manage the upgrade:
Exec['ceilometer-dbsync'] -> Exec['aodh-db-sync']
include ::aodh::auth
include ::aodh::api
include ::aodh::wsgi::apache
include ::aodh::evaluator
include ::aodh::notifier
include ::aodh::listener
include ::aodh::client
# Heat
class { '::heat' :
notification_driver => 'messaging',

@ -1040,6 +1040,32 @@ if hiera('step') >= 3 {
neutron_options => $neutron_options,
}
# Aodh
class { '::aodh' :
database_connection => $ceilometer_database_connection,
}
include ::aodh::config
include ::aodh::auth
include ::aodh::client
include ::aodh::wsgi::apache
class { '::aodh::api':
manage_service => false,
enabled => false,
service_name => 'httpd',
}
class { '::aodh::evaluator':
manage_service => false,
enabled => false,
}
class { '::aodh::notifier':
manage_service => false,
enabled => false,
}
class { '::aodh::listener':
manage_service => false,
enabled => false,
}
$snmpd_user = hiera('snmpd_readonly_user_name')
snmp::snmpv3_user { $snmpd_user:
authtype => 'MD5',
@ -1520,7 +1546,7 @@ if hiera('step') >= 4 {
Pacemaker::Resource::Service[$::nova::params::conductor_service_name]],
}
# Ceilometer
# Ceilometer and Aodh
case downcase(hiera('ceilometer_backend')) {
/mysql/: {
pacemaker::resource::service { $::ceilometer::params::agent_central_service_name :
@ -1553,8 +1579,10 @@ if hiera('step') >= 4 {
# 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',
@ -1566,6 +1594,16 @@ if hiera('step') >= 4 {
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',
second_resource => "${::aodh::params::evaluator_service_name}-clone",
first_action => 'promote',
second_action => 'start',
constraint_params => $redis_aodh_constraint_params,
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 => "${::apache::params::service_name}-clone",
@ -1616,6 +1654,60 @@ if hiera('step') >= 4 {
require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name],
Pacemaker::Resource::Ocf['delay']],
}
# Aodh
pacemaker::resource::service { $::aodh::params::api_service_name :
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::aodh::params::evaluator_service_name :
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::aodh::params::notifier_service_name :
clone_params => 'interleave=true',
}
pacemaker::resource::service { $::aodh::params::listener_service_name :
clone_params => 'interleave=true',
}
pacemaker::constraint::base { 'keystone-then-aodh-api-constraint':
constraint_type => 'order',
first_resource => "${::apache::params::service_name}-clone",
second_resource => "${::aodh::params::api_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::aodh::params::api_service_name],
Pacemaker::Resource::Service[$::apache::params::service_name]],
}
pacemaker::constraint::base { 'aodh-delay-then-aodh-evaluator-constraint':
constraint_type => 'order',
first_resource => 'delay-clone',
second_resource => "${::aodh::params::evaluator_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
Pacemaker::Resource::Ocf['delay']],
}
pacemaker::constraint::colocation { 'aodh-evaluator-with-aodh-delay-colocation':
source => "${::aodh::params::evaluator_service_name}-clone",
target => 'delay-clone',
score => 'INFINITY',
require => [Pacemaker::Resource::Service[$::horizon::params::http_service],
Pacemaker::Resource::Ocf['delay']],
}
pacemaker::constraint::base { 'aodh-evaluator-then-aodh-notifier-constraint':
constraint_type => 'order',
first_resource => "${::aodh::params::evaluator_service_name}-clone",
second_resource => "${::aodh::params::notifier_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
}
pacemaker::constraint::colocation { 'aodh-notifier-with-aodh-evaluator-colocation':
source => "${::aodh::params::notifier_service_name}-clone",
target => "${::aodh::params::evaluator_service_name}-clone",
score => 'INFINITY',
require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]],
}
if downcase(hiera('ceilometer_backend')) == 'mongodb' {
pacemaker::constraint::base { 'mongodb-then-ceilometer-central-constraint':
constraint_type => 'order',

@ -26,6 +26,7 @@ resources:
nova_api_vip: {get_input: nova_api_vip}
nova_metadata_vip: {get_input: nova_metadata_vip}
ceilometer_api_vip: {get_input: ceilometer_api_vip}
aodh_api_vip: {get_input: aodh_api_vip}
heat_api_vip: {get_input: heat_api_vip}
horizon_vip: {get_input: horizon_vip}
redis_vip: {get_input: redis_vip}

Loading…
Cancel
Save