Merge "Pass the DOCKER_* env vars when running docker"
[apex-tripleo-heat-templates.git] / puppet / services / pacemaker / rabbitmq.yaml
1 heat_template_version: ocata
2
3 description: >
4   RabbitMQ service with Pacemaker configured with Puppet
5
6 parameters:
7   ServiceNetMap:
8     default: {}
9     description: Mapping of service_name -> network name. Typically set
10                  via parameter_defaults in the resource registry.  This
11                  mapping overrides those in ServiceNetMapDefaults.
12     type: json
13   DefaultPasswords:
14     default: {}
15     type: json
16   EndpointMap:
17     default: {}
18     description: Mapping of service endpoint -> protocol. Typically set
19                  via parameter_defaults in the resource registry.
20     type: json
21
22 resources:
23   RabbitMQServiceBase:
24     type: ../rabbitmq.yaml
25     properties:
26       ServiceNetMap: {get_param: ServiceNetMap}
27       DefaultPasswords: {get_param: DefaultPasswords}
28       EndpointMap: {get_param: EndpointMap}
29
30 outputs:
31   role_data:
32     description: Role data for the RabbitMQ pacemaker role.
33     value:
34       service_name: rabbitmq
35       monitoring_subscription: {get_attr: [RabbitMQServiceBase, role_data, monitoring_subscription]}
36       config_settings:
37         map_merge:
38           - get_attr: [RabbitMQServiceBase, role_data, config_settings]
39           - rabbitmq::service_manage: false
40       step_config: |
41         include ::tripleo::profile::pacemaker::rabbitmq
42       upgrade_tasks:
43         - name: get bootstrap nodeid
44           tags: common
45           command: hiera bootstrap_nodeid
46           register: bootstrap_node
47         - name: set is_bootstrap_node fact
48           tags: common
49           set_fact: is_bootstrap_node={{bootstrap_node.stdout == ansible_hostname}}
50         - name: get rabbitmq policy
51           tags: common
52           shell: pcs resource show rabbitmq | grep -q -E "Attributes:.*\"ha-mode\":\"all\""
53           register: rabbit_ha_mode
54           when: is_bootstrap_node
55           ignore_errors: true
56         - name: set migrate_rabbit_ha_mode fact
57           tags: common
58           set_fact: migrate_rabbit_ha_mode={{rabbit_ha_mode.rc == 0}}
59           when: is_bootstrap_node
60         - name: Fixup for rabbitmq ha-queues LP#1668600
61           tags: step0,pre-upgrade
62           shell: |
63             nr_controllers=$(($(hiera controller_node_names | grep -o "," |wc -l) + 1))
64             nr_queues=$(($nr_controllers / 2 + ($nr_controllers % 2)))
65             if ! [ $nr_queues -gt 0 -a $nr_queues -le $nr_controllers ]; then
66                 echo "ERROR: The nr. of HA queues during the rabbit upgrade is out of range: $nr_queues"
67                 exit 1
68             fi
69             pcs resource update rabbitmq set_policy='ha-all ^(?!amq\\.).* {"ha-mode":"exactly","ha-params":'"$nr_queues}" --wait=600
70           when: is_bootstrap_node and migrate_rabbit_ha_mode
71       metadata_settings:
72         get_attr: [RabbitMQServiceBase, role_data, metadata_settings]