From 458dcbfdbeb574fcb44b1c1443fe00892db13e7e Mon Sep 17 00:00:00 2001 From: Matt Crees Date: Thu, 2 Mar 2023 09:57:35 +0000 Subject: [PATCH] Remove RabbitMQ ha-all policy when not required With the addition of the variable `om_enable_rabbitmq_high_availability`, this feature in the upgrade task should be brought back. It is also now used in the deploy task. The `ha-all` policy is cleared only when `om_enable_rabbitmq_high_availability` is set to `false`. Change-Id: Ia056aa40e996b1f0fed43c0f672466c7e4a2f547 (cherry picked from commit c85b64d1589a515da2f3cf2dcc082d15df1d6edd) --- ansible/roles/rabbitmq/tasks/deploy.yml | 4 +++ .../rabbitmq/tasks/remove-ha-all-policy.yml | 28 +++++++++++++++++++ ansible/roles/rabbitmq/tasks/upgrade.yml | 23 ++------------- ...cy-when-not-required-81dcf64542c4805f.yaml | 5 ++++ 4 files changed, 39 insertions(+), 21 deletions(-) create mode 100644 ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml create mode 100644 releasenotes/notes/rabbitmq-remove-ha-all-policy-when-not-required-81dcf64542c4805f.yaml diff --git a/ansible/roles/rabbitmq/tasks/deploy.yml b/ansible/roles/rabbitmq/tasks/deploy.yml index d0b36cb78b..e0edfaa246 100644 --- a/ansible/roles/rabbitmq/tasks/deploy.yml +++ b/ansible/roles/rabbitmq/tasks/deploy.yml @@ -1,4 +1,8 @@ --- +- include_tasks: remove-ha-all-policy.yml + when: + - not om_enable_rabbitmq_high_availability | bool + - import_tasks: config.yml - import_tasks: check-containers.yml diff --git a/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml b/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml new file mode 100644 index 0000000000..522a6c57de --- /dev/null +++ b/ansible/roles/rabbitmq/tasks/remove-ha-all-policy.yml @@ -0,0 +1,28 @@ +--- +- block: + - name: Get container facts + become: true + kolla_container_facts: + name: + - "{{ service.container_name }}" + register: container_facts + + - block: + - name: List RabbitMQ policies + become: true + command: "docker exec {{ service.container_name }} rabbitmqctl list_policies --silent" + register: rabbitmq_policies + changed_when: false + + - name: Remove ha-all policy from RabbitMQ + become: true + command: "docker exec {{ service.container_name }} rabbitmqctl clear_policy ha-all" + when: + - "'ha-all' in rabbitmq_policies.stdout" + when: container_facts[service.container_name] is defined + + delegate_to: "{{ groups[role_rabbitmq_groups] | first }}" + run_once: true + vars: + service_name: "rabbitmq" + service: "{{ rabbitmq_services[service_name] }}" diff --git a/ansible/roles/rabbitmq/tasks/upgrade.yml b/ansible/roles/rabbitmq/tasks/upgrade.yml index c4aa2a8d63..ee7f4ced3a 100644 --- a/ansible/roles/rabbitmq/tasks/upgrade.yml +++ b/ansible/roles/rabbitmq/tasks/upgrade.yml @@ -16,28 +16,9 @@ when: inventory_hostname in groups[role_rabbitmq_groups] register: rabbitmq_differs -- name: List RabbitMQ policies - vars: - service_name: "rabbitmq" - service: "{{ rabbitmq_services[service_name] }}" - become: true - command: "docker exec {{ service.container_name }} rabbitmqctl list_policies --silent" - delegate_to: "{{ groups[role_rabbitmq_groups] | first }}" - run_once: true - register: rabbitmq_policies - changed_when: false - -# NOTE(dszumski): This can be removed in the Zed cycle -- name: Remove ha-all policy from RabbitMQ - vars: - service_name: "rabbitmq" - service: "{{ rabbitmq_services[service_name] }}" - become: true - command: "docker exec {{ service.container_name }} rabbitmqctl clear_policy ha-all" - delegate_to: "{{ groups[role_rabbitmq_groups] | first }}" +- include_tasks: remove-ha-all-policy.yml when: - - "'ha-all' in rabbitmq_policies.stdout" - run_once: true + - not om_enable_rabbitmq_high_availability | bool - import_tasks: config.yml diff --git a/releasenotes/notes/rabbitmq-remove-ha-all-policy-when-not-required-81dcf64542c4805f.yaml b/releasenotes/notes/rabbitmq-remove-ha-all-policy-when-not-required-81dcf64542c4805f.yaml new file mode 100644 index 0000000000..fe8f6030ac --- /dev/null +++ b/releasenotes/notes/rabbitmq-remove-ha-all-policy-when-not-required-81dcf64542c4805f.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + When upgrading or deploying RabbitMQ, the policy `ha-all` is cleared if + `om_enable_rabbitmq_high_availability` is set to `false`.