Refactor plugin to replace default rabbitmq tasks

Task-based deployment instead of role-based deployment
results in faster deployment, but requires better
management of task dependencies. RabbitMQ tasks are
now better tuned to ensure detached RabbitMQ is ready
before deployment starts.

Other minor changes:
  Added primary role to standalone-rabbitmq role
  Updated hiera override for new role name

Depends-On: I5e835a448ad0d77f0f82630273e15c00261cfb82
Change-Id: I1c8ec11a1507b48237641da7c4bac036745859cb
Partial-Bug: #1553239
This commit is contained in:
Matthew Mosesohn 2016-03-29 18:48:57 +03:00
parent 53a05418a3
commit 9c16386fbc
3 changed files with 63 additions and 38 deletions

View File

@ -7,7 +7,7 @@ if ($detach_rabbitmq_plugin) {
$hiera_plugins_dir = '/etc/hiera/plugins'
$plugin_yaml = "${hiera_plugins_dir}/${plugin_name}.yaml"
$network_metadata = hiera_hash('network_metadata')
$rabbitmq_roles = [ 'standalone-rabbitmq' ]
$rabbitmq_roles = [ 'primary-standalone-rabbitmq', 'standalone-rabbitmq' ]
$rabbit_nodes = get_nodes_hash_by_roles($network_metadata, $rabbitmq_roles)
$rabbit_address_map = get_node_to_ipaddr_map_by_network_role(
@ -22,7 +22,7 @@ if ($detach_rabbitmq_plugin) {
$amqp_port = hiera('amqp_port', '5673')
case hiera_array('roles', 'none') {
/rabbitmq/: {
/standalone-rabbitmq/: {
$rabbit_enabled = true
$corosync_roles = $rabbitmq_roles
$deploy_vrouter = false

View File

@ -1,7 +1,34 @@
##############################################
# Deployment groups
- id: primary-standalone-rabbitmq
type: group
role: [primary-standalone-rabbitmq]
requires: [deploy_start]
required_for: [deploy_end]
tasks: [hiera, fuel_pkgs, globals, tools, logging, netconfig,
hosts, firewall, rabbitmq-firewall, deploy_start, primary-cluster,
primary-rabbitmq]
parameters:
strategy:
type: parallel
# Deployment groups
- id: standalone-rabbitmq
type: group
role: [standalone-rabbitmq]
requires: [deploy_start]
required_for: [deploy_end]
tasks: [hiera, fuel_pkgs, globals, tools, logging, netconfig,
hosts, firewall, rabbitmq-firewall, deploy_start, cluster, rabbitmq]
parameters:
strategy:
type: parallel
# Deployment tasks
- id: rabbitmq-hiera-override
type: puppet
groups: [primary-controller, controller, standalone-rabbitmq,
cinder, cinder-vmware, compute, ceph-osd, primary-mongo, mongo]
version: 2.0.0
role: '*'
requires: [globals]
required_for: [logging]
parameters:
@ -9,44 +36,42 @@
puppet_modules: "/etc/puppet/modules"
timeout: 120
##############################################
# Deployment groups
- id: standalone-rabbitmq
type: group
role: [standalone-rabbitmq]
requires: [deploy_start]
required_for: [deploy_end, primary-controller, controller]
tasks: [hiera, fuel_pkgs, globals, tools, logging, netconfig,
hosts, firewall, rabbitmq-firewall, deploy_start, cluster, task-rabbitmq]
parameters:
strategy:
type: parallel
# Deployment tasks
- id: task-rabbitmq
type: puppet
version: 2.0.0
groups: [standalone-rabbitmq]
requires: [hosts, firewall, rabbitmq-firewall, globals,
rabbitmq-hiera-override, cluster]
required_for: [deploy_end]
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq.pp
puppet_modules: /etc/puppet/modules
timeout: 3600
test_pre:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq_pre.rb
test_post:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq_post.rb
# Deployment tasks
- id: rabbitmq-firewall
type: puppet
version: 2.0.0
groups: [standalone-rabbitmq]
role: [standalone-rabbitmq]
requires: [hosts, globals, rabbitmq-hiera-override, firewall]
required_for: [deploy_end]
required_for: [deploy_end, cluster, primary-cluster,
rabbitmq, primary-rabbitmq]
parameters:
puppet_manifest: "rabbitmq_firewall.pp"
puppet_modules: /etc/puppet/modules
timeout: 3600
- id: rabbitmq
type: puppet
version: 2.0.0
groups: [standalone-rabbitmq]
cross-depends:
- name: primary-rabbitmq
required_for: [deploy_end, openstack-controller, primary-openstack-controller, glance]
requires: [netconfig, cluster]
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq.pp
puppet_modules: /etc/puppet/modules
timeout: 3600
test_post:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq_post.rb
- id: primary-rabbitmq
type: puppet
version: 2.0.0
groups: [primary-standalone-rabbitmq]
required_for: [deploy_end, openstack-controller, primary-openstack-controller, glance]
requires: [netconfig, primary-cluster]
parameters:
puppet_manifest: /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq.pp
puppet_modules: /etc/puppet/modules
timeout: 3600
test_post:
cmd: ruby /etc/puppet/modules/osnailyfacter/modular/rabbitmq/rabbitmq_post.rb

View File

@ -1,7 +1,7 @@
standalone-rabbitmq:
name: "RabbitMQ"
description: "Separated RabbitMQ from controller"
has_primary: false # whether has primary role or not
has_primary: true # whether has primary role or not
public_ip_required: false # whether requires public net or not
weight: 100 # weight that will be used for ordering on fuel ui
limits: