From d4e07433285ac358c801dd953f1fdb7a84faa4b2 Mon Sep 17 00:00:00 2001 From: Michael Chapman Date: Wed, 27 Jan 2016 20:05:58 -0500 Subject: Aodh fixes instack.sh: Patch puppet-tripleo to include aodh loadbalancing tripleo-heat-templates: Remove ceilometer services that are replaced by aodh Add rabbit_hosts to aodh config Add ceilometer config file that was missing Add nobody group to aodh user Change-Id: Ie25cdbf44fc7f23bd65a0af23358b24e3032ea81 --- build/aodh-puppet-tripleo.patch | 111 ++++++++++++++++++++++ build/instack.sh | 5 + build/opnfv-tripleo-heat-templates.patch | 158 ++++++++++++++++++++++--------- 3 files changed, 231 insertions(+), 43 deletions(-) create mode 100644 build/aodh-puppet-tripleo.patch (limited to 'build') diff --git a/build/aodh-puppet-tripleo.patch b/build/aodh-puppet-tripleo.patch new file mode 100644 index 00000000..819b9061 --- /dev/null +++ b/build/aodh-puppet-tripleo.patch @@ -0,0 +1,111 @@ +From 784cd3f4e6481b9c802db25ab379fccdab4bd1c3 Mon Sep 17 00:00:00 2001 +From: Emilien Macchi +Date: Tue, 3 Nov 2015 17:43:01 -0500 +Subject: [PATCH] loadbalancer: add Aodh API support + +Add Aodh (Ceilometer Alarming) support in TripleO Loadbalancer config. + +Change-Id: I891985da9248a88c6ce2df1dd186881f582605ee +--- + manifests/loadbalancer.pp | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +diff --git a/manifests/loadbalancer.pp b/manifests/loadbalancer.pp +index 16a4f80..2fcfac6 100644 +--- a/manifests/loadbalancer.pp ++++ b/manifests/loadbalancer.pp +@@ -130,6 +130,11 @@ + # When set, enables SSL on the Ceilometer public API endpoint using the specified file. + # Defaults to undef + # ++# [*aodh_certificate*] ++# Filename of an HAProxy-compatible certificate and key file ++# When set, enables SSL on the Aodh public API endpoint using the specified file. ++# Defaults to undef ++# + # [*swift_certificate*] + # Filename of an HAProxy-compatible certificate and key file + # When set, enables SSL on the Swift public API endpoint using the specified file. +@@ -198,6 +203,10 @@ + # (optional) Enable or not Ceilometer API binding + # Defaults to false + # ++# [*aodh*] ++# (optional) Enable or not Aodh API binding ++# Defaults to false ++# + # [*swift_proxy_server*] + # (optional) Enable or not Swift API binding + # Defaults to false +@@ -262,6 +271,7 @@ class tripleo::loadbalancer ( + $glance_certificate = undef, + $nova_certificate = undef, + $ceilometer_certificate = undef, ++ $aodh_certificate = undef, + $swift_certificate = undef, + $heat_certificate = undef, + $horizon_certificate = undef, +@@ -278,6 +288,7 @@ class tripleo::loadbalancer ( + $nova_metadata = false, + $nova_novncproxy = false, + $ceilometer = false, ++ $aodh = false, + $swift_proxy_server = false, + $heat_api = false, + $heat_cloudwatch = false, +@@ -421,6 +432,11 @@ class tripleo::loadbalancer ( + } else { + $ceilometer_bind_certificate = $service_certificate + } ++ if $aodh_certificate { ++ $aodh_bind_certificate = $aodh_certificate ++ } else { ++ $aodh_bind_certificate = $service_certificate ++ } + if $swift_certificate { + $swift_bind_certificate = $swift_certificate + } else { +@@ -558,6 +574,19 @@ class tripleo::loadbalancer ( + } + } + ++ $aodh_api_vip = hiera('aodh_api_vip', $controller_virtual_ip) ++ if $aodh_bind_certificate { ++ $aodh_bind_opts = { ++ "${aodh_api_vip}:8042" => [], ++ "${public_virtual_ip}:13042" => ['ssl', 'crt', $aodh_bind_certificate], ++ } ++ } else { ++ $aodh_bind_opts = { ++ "${aodh_api_vip}:8042" => [], ++ "${public_virtual_ip}:8042" => [], ++ } ++ } ++ + $swift_proxy_vip = hiera('swift_proxy_vip', $controller_virtual_ip) + if $swift_bind_certificate { + $swift_bind_opts = { +@@ -840,6 +869,20 @@ class tripleo::loadbalancer ( + } + } + ++ if $aodh { ++ haproxy::listen { 'aodh': ++ bind => $aodh_bind_opts, ++ collect_exported => false, ++ } ++ haproxy::balancermember { 'aodh': ++ listening_service => 'aodh', ++ ports => '8042', ++ ipaddresses => hiera('aodh_api_node_ips', $controller_hosts_real), ++ server_names => $controller_hosts_names_real, ++ options => ['check', 'inter 2000', 'rise 2', 'fall 5'], ++ } ++ } ++ + if $swift_proxy_server { + haproxy::listen { 'swift_proxy_server': + bind => $swift_bind_opts, +-- +1.8.3.1 + diff --git a/build/instack.sh b/build/instack.sh index a0f2d0f0..8b00bbe4 100755 --- a/build/instack.sh +++ b/build/instack.sh @@ -333,10 +333,15 @@ LIBGUESTFS_BACKEND=direct virt-customize --upload ../opnfv-tripleo-heat-template LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-neutron-force-metadata.patch:/tmp \ --run-command "cd /etc/puppet/modules/neutron && patch -Np1 < /tmp/puppet-neutron-force-metadata.patch" \ -a overcloud-full-opendaylight.qcow2 + LIBGUESTFS_BACKEND=direct virt-customize --upload ../puppet-cinder-quota-fix.patch:/tmp \ --run-command "cd /etc/puppet/modules/cinder && patch -Np1 < /tmp/puppet-cinder-quota-fix.patch" \ -a overcloud-full-opendaylight.qcow2 +LIBGUESTFS_BACKEND=direct virt-customize --upload ../aodh-puppet-tripleo.patch:/tmp \ + --run-command "cd /etc/puppet/modules/tripleo && patch -Np1 < /tmp/aodh-puppet-tripleo.patch" \ + -a overcloud-full-opendaylight.qcow2 + # adds tripleoclient aodh workaround # for keystone LIBGUESTFS_BACKEND=direct virt-customize --upload ../aodh-tripleoclient.patch:/tmp \ diff --git a/build/opnfv-tripleo-heat-templates.patch b/build/opnfv-tripleo-heat-templates.patch index 04ba061e..c456a365 100644 --- a/build/opnfv-tripleo-heat-templates.patch +++ b/build/opnfv-tripleo-heat-templates.patch @@ -1,4 +1,4 @@ -From 38d7938ada285c980298ccee22bea3e4c4c9ff33 Mon Sep 17 00:00:00 2001 +From b4edc1dff23217add43d92cac3c2906dcd1c74d1 Mon Sep 17 00:00:00 2001 From: Tim Rozet Date: Tue, 12 Jan 2016 16:49:57 -0500 Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support @@ -11,17 +11,17 @@ Subject: [PATCH] Adds current opnfv patch with ODL and ONOS support network/endpoints/endpoint_map.yaml | 31 ++ overcloud-resource-registry-puppet.yaml | 3 + overcloud-without-mergepy.yaml | 87 +++++ - puppet/all-nodes-config.yaml | 16 + + puppet/all-nodes-config.yaml | 17 + puppet/compute.yaml | 35 ++ puppet/controller.yaml | 87 ++++- puppet/hieradata/common.yaml | 1 + puppet/hieradata/controller.yaml | 3 + puppet/manifests/overcloud_compute.pp | 33 +- - puppet/manifests/overcloud_controller.pp | 104 +++++- - puppet/manifests/overcloud_controller_pacemaker.pp | 394 +++++++++++++++------ + puppet/manifests/overcloud_controller.pp | 104 ++++- + puppet/manifests/overcloud_controller_pacemaker.pp | 434 ++++++++++++++------- puppet/manifests/overcloud_opendaylight.pp | 27 ++ - puppet/opendaylight-puppet.yaml | 217 ++++++++++++ - 17 files changed, 979 insertions(+), 126 deletions(-) + puppet/opendaylight-puppet.yaml | 217 +++++++++++ + 17 files changed, 986 insertions(+), 160 deletions(-) create mode 100644 environments/onos.yaml create mode 100644 environments/opendaylight-external.yaml create mode 100644 environments/opendaylight.yaml @@ -408,7 +408,7 @@ index a532c2f..5206004 100644 description: VIP for Ceilometer API internal endpoint value: {get_attr: [VipMap, net_ip_map, {get_param: [ServiceNetMap, CeilometerApiNetwork]}]} diff --git a/puppet/all-nodes-config.yaml b/puppet/all-nodes-config.yaml -index 2bc519b..6342df3 100644 +index 2bc519b..d649ba0 100644 --- a/puppet/all-nodes-config.yaml +++ b/puppet/all-nodes-config.yaml @@ -8,6 +8,8 @@ parameters: @@ -455,6 +455,14 @@ index 2bc519b..6342df3 100644 nova_api_node_ips: str_replace: template: "['SERVERS_LIST']" +@@ -239,6 +255,7 @@ resources: + neutron::rabbit_hosts: *rabbit_nodes_array + nova::rabbit_hosts: *rabbit_nodes_array + keystone::rabbit_hosts: *rabbit_nodes_array ++ aodh::rabbit_hosts: *rabbit_nodes_array + + outputs: + config_id: diff --git a/puppet/compute.yaml b/puppet/compute.yaml index 70c7403..13fd4f6 100644 --- a/puppet/compute.yaml @@ -967,7 +975,7 @@ index 1f6c2be..474bb1d 100644 include ::heat include ::heat::api diff --git a/puppet/manifests/overcloud_controller_pacemaker.pp b/puppet/manifests/overcloud_controller_pacemaker.pp -index 3fb92f3..4dc4f7f 100644 +index 3fb92f3..5992602 100644 --- a/puppet/manifests/overcloud_controller_pacemaker.pp +++ b/puppet/manifests/overcloud_controller_pacemaker.pp @@ -380,6 +380,21 @@ if hiera('step') >= 2 { @@ -1042,7 +1050,7 @@ index 3fb92f3..4dc4f7f 100644 + } else { + $opendaylight_controller_ip = hiera('opendaylight_controller_ip') + } - ++ + $opendaylight_port = hiera('opendaylight_port') + $private_ip = hiera('neutron::agents::ml2::ovs::local_ip') + @@ -1052,7 +1060,7 @@ index 3fb92f3..4dc4f7f 100644 + odl_password => hiera('opendaylight_password'), + odl_port => hiera('opendaylight_port'), + } -+ + + if str2bool(hiera('opendaylight_install', 'false')) { + class { 'neutron::plugins::ovs::opendaylight': + odl_controller_ip => $opendaylight_controller_ip, @@ -1136,7 +1144,40 @@ index 3fb92f3..4dc4f7f 100644 # httpd/apache and horizon # NOTE(gfidente): server-status can be consumed by the pacemaker resource agent class { '::apache' : -@@ -1055,62 +1147,21 @@ if hiera('step') >= 4 { +@@ -914,6 +1006,32 @@ if hiera('step') >= 3 { + if hiera('step') >= 4 { + include ::keystone::cron::token_flush + ++ $event_pipeline = "--- ++sources: ++ - name: event_source ++ events: ++ - \"*\" ++ sinks: ++ - event_sink ++sinks: ++ - name: event_sink ++ transformers: ++ triggers: ++ publishers: ++ - notifier://?topic=alarm.all ++ - notifier:// ++" ++ ++ # aodh hacks ++ file { '/etc/ceilometer/event_pipeline': ++ ensure => present, ++ content => $event_pipeline ++ } ++ ++ user { 'aodh': ++ groups => 'nobody' ++ } ++ + if $pacemaker_master { + + # Keystone +@@ -1055,62 +1173,21 @@ if hiera('step') >= 4 { clone_params => 'interleave=true', require => Pacemaker::Resource::Service[$::keystone::params::service_name], } @@ -1203,7 +1244,7 @@ index 3fb92f3..4dc4f7f 100644 pacemaker::constraint::base { 'keystone-to-neutron-server-constraint': constraint_type => 'order', first_resource => "${::keystone::params::service_name}-clone", -@@ -1120,65 +1171,110 @@ if hiera('step') >= 4 { +@@ -1120,65 +1197,110 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Service[$::keystone::params::service_name], Pacemaker::Resource::Service[$::neutron::params::server_service]], } @@ -1370,7 +1411,7 @@ index 3fb92f3..4dc4f7f 100644 # Nova pacemaker::resource::service { $::nova::params::api_service_name : clone_params => 'interleave=true', -@@ -1276,7 +1372,7 @@ if hiera('step') >= 4 { +@@ -1276,7 +1398,7 @@ if hiera('step') >= 4 { Pacemaker::Resource::Service[$::nova::params::conductor_service_name]], } @@ -1379,13 +1420,15 @@ index 3fb92f3..4dc4f7f 100644 case downcase(hiera('ceilometer_backend')) { /mysql/: { pacemaker::resource::service { $::ceilometer::params::agent_central_service_name : -@@ -1304,6 +1400,21 @@ if hiera('step') >= 4 { - pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name : +@@ -1298,10 +1420,19 @@ if hiera('step') >= 4 { + pacemaker::resource::service { $::ceilometer::params::api_service_name : clone_params => 'interleave=true', } +- pacemaker::resource::service { $::ceilometer::params::alarm_evaluator_service_name : + pacemaker::resource::service { $::aodh::params::notifier_service_name : -+ clone_params => 'interleave=true', -+ } + clone_params => 'interleave=true', + } +- pacemaker::resource::service { $::ceilometer::params::alarm_notifier_service_name : + pacemaker::resource::service { $::aodh::params::expirer_package_serice : + clone_params => 'interleave=true', + } @@ -1396,12 +1439,10 @@ index 3fb92f3..4dc4f7f 100644 + clone_params => 'interleave=true', + } + pacemaker::resource::service { $::aodh::params::evaluator_service_name : -+ clone_params => 'interleave=true', -+ } - pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name : clone_params => 'interleave=true', } -@@ -1315,8 +1426,19 @@ if hiera('step') >= 4 { + pacemaker::resource::service { $::ceilometer::params::agent_notification_service_name : +@@ -1315,8 +1446,19 @@ if hiera('step') >= 4 { # Fedora doesn't know `require-all` parameter for constraints yet if $::operatingsystem == 'Fedora' { $redis_ceilometer_constraint_params = undef @@ -1421,7 +1462,7 @@ index 3fb92f3..4dc4f7f 100644 } pacemaker::constraint::base { 'redis-then-ceilometer-central-constraint': constraint_type => 'order', -@@ -1328,6 +1450,16 @@ if hiera('step') >= 4 { +@@ -1328,6 +1470,16 @@ if hiera('step') >= 4 { require => [Pacemaker::Resource::Ocf['redis'], Pacemaker::Resource::Service[$::ceilometer::params::agent_central_service_name]], } @@ -1438,45 +1479,76 @@ index 3fb92f3..4dc4f7f 100644 pacemaker::constraint::base { 'keystone-then-ceilometer-central-constraint': constraint_type => 'order', first_resource => "${::keystone::params::service_name}-clone", -@@ -1426,6 +1558,38 @@ if hiera('step') >= 4 { - require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name], - Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]], +@@ -1378,53 +1530,37 @@ if hiera('step') >= 4 { + require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name], + Pacemaker::Resource::Ocf['delay']], } +- pacemaker::constraint::base { 'ceilometer-delay-then-ceilometer-alarm-evaluator-constraint': + pacemaker::constraint::base { 'aodh-delay-then-aodh-evaluator-constraint': -+ constraint_type => 'order', -+ first_resource => 'delay-clone', + constraint_type => 'order', + first_resource => 'delay-clone', +- second_resource => "${::ceilometer::params::alarm_evaluator_service_name}-clone", + second_resource => "${::aodh::params::evaluator_service_name}-clone", -+ first_action => 'start', -+ second_action => 'start', + first_action => 'start', + second_action => 'start', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name], + require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name], -+ Pacemaker::Resource::Ocf['delay']], -+ } + Pacemaker::Resource::Ocf['delay']], + } +- pacemaker::constraint::colocation { 'ceilometer-alarm-evaluator-with-ceilometer-delay-colocation': +- source => "${::ceilometer::params::alarm_evaluator_service_name}-clone", + pacemaker::constraint::colocation { 'aodh-evaluator-with-aodh-delay-colocation': + source => "${::aodh::params::evaluator_service_name}-clone", -+ target => 'delay-clone', -+ score => 'INFINITY', + target => 'delay-clone', + score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::api_service_name], + require => [Pacemaker::Resource::Service[$::horizon::params::http_service], -+ Pacemaker::Resource::Ocf['delay']], -+ } + Pacemaker::Resource::Ocf['delay']], + } +- pacemaker::constraint::base { 'ceilometer-alarm-evaluator-then-ceilometer-alarm-notifier-constraint': +- constraint_type => 'order', +- first_resource => "${::ceilometer::params::alarm_evaluator_service_name}-clone", +- second_resource => "${::ceilometer::params::alarm_notifier_service_name}-clone", +- first_action => 'start', +- second_action => 'start', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name], +- Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]], +- } +- pacemaker::constraint::colocation { 'ceilometer-alarm-notifier-with-ceilometer-alarm-evaluator-colocation': +- source => "${::ceilometer::params::alarm_notifier_service_name}-clone", +- target => "${::ceilometer::params::alarm_evaluator_service_name}-clone", +- score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::alarm_evaluator_service_name], +- Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]], +- } +- pacemaker::constraint::base { 'ceilometer-alarm-notifier-then-ceilometer-notification-constraint': + pacemaker::constraint::base { 'aodh-evaluator-then-aodh-notifier-constraint': -+ constraint_type => 'order', + constraint_type => 'order', +- first_resource => "${::ceilometer::params::alarm_notifier_service_name}-clone", +- second_resource => "${::ceilometer::params::agent_notification_service_name}-clone", + first_resource => "${::aodh::params::evaluator_service_name}-clone", + second_resource => "${::aodh::params::notifier_service_name}-clone", -+ first_action => 'start', -+ second_action => 'start', + first_action => 'start', + second_action => 'start', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name], +- Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]], + require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name], + Pacemaker::Resource::Service[$::aodh::params::notifier_service_name]], -+ } + } +- pacemaker::constraint::colocation { 'ceilometer-notification-with-ceilometer-alarm-notifier-colocation': +- source => "${::ceilometer::params::agent_notification_service_name}-clone", +- target => "${::ceilometer::params::alarm_notifier_service_name}-clone", + 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', + score => 'INFINITY', +- require => [Pacemaker::Resource::Service[$::ceilometer::params::agent_notification_service_name], +- Pacemaker::Resource::Service[$::ceilometer::params::alarm_notifier_service_name]], + 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', diff --git a/puppet/manifests/overcloud_opendaylight.pp b/puppet/manifests/overcloud_opendaylight.pp new file mode 100644 index 0000000..33f609a @@ -1734,5 +1806,5 @@ index 0000000..b876dc7 + - - {get_attr: [OpenDaylightDeployment, deploy_stdout]} + - {get_param: UpdateIdentifier} -- -2.5.0 +2.5.4 (Apple Git-61) -- cgit 1.2.3-korg