From 9c16386fbc1bb3e0fcde3f707707663a0196a7b2 Mon Sep 17 00:00:00 2001 From: Matthew Mosesohn Date: Tue, 29 Mar 2016 18:48:57 +0300 Subject: [PATCH] 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 --- deployment_scripts/rabbitmq_hiera_override.pp | 4 +- deployment_tasks.yaml | 95 ++++++++++++------- node_roles.yaml | 2 +- 3 files changed, 63 insertions(+), 38 deletions(-) diff --git a/deployment_scripts/rabbitmq_hiera_override.pp b/deployment_scripts/rabbitmq_hiera_override.pp index 9cf8b19..0b9ebbe 100644 --- a/deployment_scripts/rabbitmq_hiera_override.pp +++ b/deployment_scripts/rabbitmq_hiera_override.pp @@ -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 diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml index c9e55aa..e0aed46 100644 --- a/deployment_tasks.yaml +++ b/deployment_tasks.yaml @@ -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 diff --git a/node_roles.yaml b/node_roles.yaml index 68292a1..8f5f8dc 100644 --- a/node_roles.yaml +++ b/node_roles.yaml @@ -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: