rabbitmq: update cluster version on reconfigure

This fixes https://bugs.launchpad.net/kolla-ansible/+bug/1731142. The
solution is to bump a version number of the cluster configuration
file (/etc/kolla/rabbitmq/rabbitmq-clusterer.config) every time
RabbitMQ configuration files change.

Closes-bug: #1731142
Change-Id: I26cce92e52b2ba6b905658e11d794c65e361f545
This commit is contained in:
Grzegorz Sikorski 2020-03-17 09:07:03 +01:00
parent 3ecc2f7370
commit 7408d49979
2 changed files with 51 additions and 1 deletions

View File

@ -12,6 +12,25 @@
- item.value.enabled | bool
with_dict: "{{ rabbitmq_services }}"
- name: Reading cluster configuration file
become: True
slurp:
src: "{{ node_config_directory }}/{{ project_name }}/rabbitmq-clusterer.config"
register: cluster_config
failed_when: False
- name: Establishing existing cluster version number
set_fact:
rabbitmq_cluster_version: "{{ cluster_config['content'] | b64decode | regex_search(regexp,'\\1', multiline=True) | first }}"
vars:
regexp: '\{version, (\d+)\},'
when: cluster_config['content'] is defined
- name: Establishing default cluster version number
set_fact:
rabbitmq_cluster_version: 1
when: cluster_config['content'] is not defined
- name: Copying over config.json files for services
template:
src: "{{ item.key }}.json.j2"
@ -29,6 +48,7 @@
- name: Copying over rabbitmq configs
vars:
service: "{{ rabbitmq_services['rabbitmq'] }}"
cluster_version: "{{ rabbitmq_cluster_version }}"
template:
src: "{{ item }}.j2"
dest: "{{ node_config_directory }}/{{ project_name }}/{{ item }}"
@ -46,6 +66,36 @@
notify:
- Restart rabbitmq container
- name: Bumping cluster version
vars:
service: "{{ rabbitmq_services['rabbitmq'] }}"
set_fact:
rabbitmq_cluster_version: "{{ rabbitmq_cluster_version | int + 1 }}"
when:
- inventory_hostname in groups[service.group]
- service.enabled | bool
- rabbitmq_confs.changed | bool
- cluster_config['content'] is defined
- name: Updating cluster version
vars:
service: "{{ rabbitmq_services['rabbitmq'] }}"
cluster_version: "{{ rabbitmq_cluster_version }}"
template:
src: "{{ item }}.j2"
dest: "{{ node_config_directory }}/{{ project_name }}/{{ item }}"
mode: "0660"
become: true
when:
- inventory_hostname in groups[service.group]
- service.enabled | bool
- rabbitmq_confs.changed | bool
- cluster_config['content'] is defined
with_items:
- "rabbitmq-clusterer.config"
notify:
- Restart rabbitmq container
- name: Check rabbitmq containers
become: true
kolla_docker:

View File

@ -1,5 +1,5 @@
[
{version, 1},
{version, {{ cluster_version }}},
{nodes, [
{% for host in groups[role_rabbitmq_groups] %}
{'rabbit@{{ hostvars[host]['ansible_hostname'] }}', disc}