0cd5b027c9
The host list order seen during Ansible handlers may differ to the usual play host list order, due to race conditions in notifying handlers. This means that restart_services.yml for RabbitMQ may be included in a different order than the rabbitmq group, resulting in a node other than the 'first' being restarted first. This can cause some nodes to fail to join the cluster. The include_tasks loop was introduced in [1]. This change fixes the issue by splitting the handler into two tasks, and restarting the first node before all others. [1] https://review.opendev.org/c/openstack/kolla-ansible/+/763137 Change-Id: I1823301d5889589bfd48326ed7de03c6061ea5ba Closes-Bug: #1930293
27 lines
964 B
YAML
27 lines
964 B
YAML
---
|
|
# NOTE(mgoddard): These tasks perform a 'full stop upgrade', which is necessary when moving between
|
|
# major releases. In future kolla-ansible releases we may be able to change this to a rolling
|
|
# restart. For info on this process see https://www.rabbitmq.com/upgrade.html
|
|
|
|
- name: Restart first rabbitmq container
|
|
vars:
|
|
service_name: "rabbitmq"
|
|
service: "{{ rabbitmq_services[service_name] }}"
|
|
include_tasks: 'restart_services.yml'
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname == groups[service.group] | first
|
|
listen: Restart rabbitmq container
|
|
|
|
- name: Restart remaining rabbitmq containers
|
|
vars:
|
|
service_name: "rabbitmq"
|
|
service: "{{ rabbitmq_services[service_name] }}"
|
|
include_tasks: 'restart_services.yml'
|
|
when:
|
|
- kolla_action != "config"
|
|
- inventory_hostname == item
|
|
- inventory_hostname != groups[service.group] | first
|
|
loop: "{{ groups[service.group] }}"
|
|
listen: Restart rabbitmq container
|