Skip to content

Instantly share code, notes, and snippets.

@pkilambi
Last active May 24, 2016 08:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pkilambi/f7de42bdfaa4cb7475f181f767377ddf to your computer and use it in GitHub Desktop.
Save pkilambi/f7de42bdfaa4cb7475f181f767377ddf to your computer and use it in GitHub Desktop.
extraconfig/tasks/aodh_upgrade.yaml:
heat_template_version: 2014-10-16
description: >
Software-config for performing aodh upgrades
parameters:
controller_servers:
type: json
resources:
AodhPreUpgradeConfig:
type: OS::Heat::SoftwareConfig
properties:
group: script
config:
get_file: major_upgrade_pacemaker_migrations.sh
list_join:
- ''
- - "#!/bin/bash\n\n"
- "remove_ceilometer_alarm\n\n"
AodhUpgradeConfig:
type: OS::Heat::SoftwareConfig
properties:
group: puppet
config:
get_file: aodh_upgrade.pp
AodhPreUpgradeDeployment:
type: OS::Heat::SoftwareDeployment
properties:
name: AodhPreUpgradeDeployment
server: {get_param: controller_servers}
config: {get_resource: AodhPreUpgradeConfig}
AodhUpgradeConfigDeployment:
type: OS::Heat::SoftwareDeployment
depends_on: AodhPreUpgradeDeployment
properties:
name: AodhUpgradeConfigDeployment
server: {get_param: controller_servers}
config: {get_resource: AodhUpgradeConfig}
extraconfig/tasks/aodh_upgrade.pp:
if $::hostname == downcase(hiera('bootstrap_nodeid')) {
$pacemaker_master = true
} else {
$pacemaker_master = false
}
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')
}
$mongodb_replset = hiera('mongodb::server::replset')
$mongo_node_string = join($mongo_node_ips_with_port, ',')
$database_connection = "mongodb://${mongo_node_string}/ceilometer?replicaSet=${mongodb_replset}"
class { '::aodh' :
database_connection => $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,
}
if $pacemaker_master {
# Fedora doesn't know `require-all` parameter for constraints yet
if $::operatingsystem == 'Fedora' {
$redis_aodh_constraint_params = undef
} else {
$redis_aodh_constraint_params = 'require-all=false'
}
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::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 { '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[$::aodh::params::evaluator_service_name],
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]],
}
pacemaker::constraint::base { 'aodh-evaluator-then-aodh-listener-constraint':
constraint_type => 'order',
first_resource => "${::aodh::params::evaluator_service_name}-clone",
second_resource => "${::aodh::params::listener_service_name}-clone",
first_action => 'start',
second_action => 'start',
require => [Pacemaker::Resource::Service[$::aodh::params::evaluator_service_name],
Pacemaker::Resource::Service[$::aodh::params::listener_service_name]],
}
pacemaker::constraint::colocation { 'aodh-listener-with-aodh-evaluator-colocation':
source => "${::aodh::params::listener_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::listener_service_name]],
}
}
@jistr
Copy link

jistr commented May 24, 2016

The get_file should go within the list_join i think, to produce a single script.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment