Merge "Move verification of cluster_state to a separate file"
This commit is contained in:
commit
c7b2ef91e0
@ -82,14 +82,30 @@
|
|||||||
- name: Flush handlers
|
- name: Flush handlers
|
||||||
meta: flush_handlers
|
meta: flush_handlers
|
||||||
|
|
||||||
- name: Importing rabbitmq_feature_flags tasks
|
- name: Ensure all flags are set after upgrade is done
|
||||||
include_tasks: rabbitmq_feature_flags.yml
|
|
||||||
args:
|
|
||||||
apply:
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
when:
|
when:
|
||||||
- _rabbitmq_is_last_play_host
|
- _rabbitmq_is_last_play_host
|
||||||
- rabbitmq_upgrade
|
- rabbitmq_upgrade
|
||||||
|
block:
|
||||||
|
- name: Including rabbitmq_cluster_state tasks
|
||||||
|
include_tasks: rabbitmq_cluster_state.yml
|
||||||
|
args:
|
||||||
|
apply:
|
||||||
|
tags:
|
||||||
|
- rabbitmq-upgrade
|
||||||
|
tags:
|
||||||
|
- rabbitmq-upgrade
|
||||||
|
|
||||||
|
- name: Importing rabbitmq_feature_flags tasks
|
||||||
|
include_tasks: rabbitmq_feature_flags.yml
|
||||||
|
args:
|
||||||
|
apply:
|
||||||
|
tags:
|
||||||
|
- rabbitmq-upgrade
|
||||||
|
tags:
|
||||||
|
- rabbitmq-upgrade
|
||||||
|
when:
|
||||||
|
- _cluster_state
|
||||||
|
- (_cluster_state.get('running_nodes', []) | length) == (groups[rabbitmq_host_group] | length)
|
||||||
|
- (_cluster_state.get('alarms', []) | length) == 0
|
||||||
|
- (_cluster_state.get('partitions', []) | length) == 0
|
||||||
|
24
tasks/rabbitmq_cluster_state.yml
Normal file
24
tasks/rabbitmq_cluster_state.yml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
# Copyright 2024, Cleura AB
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: "Gather cluster status"
|
||||||
|
command: "rabbitmqctl cluster_status --formatter json"
|
||||||
|
register: _cluster_status
|
||||||
|
changed_when: False
|
||||||
|
failed_when: False
|
||||||
|
|
||||||
|
- name: Define cluster_state fact
|
||||||
|
set_fact:
|
||||||
|
_cluster_state: "{{ (_cluster_status.rc == 0) | ternary(_cluster_status.stdout, {} | string) | from_json }}"
|
@ -13,32 +13,17 @@
|
|||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
- name: "Gather cluster status"
|
- name: "Check for disabled RabbitMQ feature flags"
|
||||||
command: "rabbitmqctl cluster_status --formatter json"
|
command: "rabbitmqctl list_feature_flags --formatter json name state stability"
|
||||||
register: _cluster_status
|
register: _feature_flags
|
||||||
changed_when: False
|
changed_when: False
|
||||||
failed_when: False
|
failed_when: False
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
|
|
||||||
- name: "Only enable feature flags if all cluster members are up and stable"
|
# NOTE: changed_when required despite the above check because 'unstable'
|
||||||
block:
|
# feature flags will remain disabled each time this runs
|
||||||
- name: "Check for disabled RabbitMQ feature flags"
|
- name: "Enable missing RabbitMQ feature flags"
|
||||||
command: "rabbitmqctl list_feature_flags --formatter json name state stability"
|
command: "rabbitmqctl enable_feature_flag {{ flag['name'] }}"
|
||||||
register: _feature_flags
|
changed_when: False
|
||||||
changed_when: False
|
loop: "{{ _feature_flags.stdout | from_json | rejectattr('stability', 'eq', 'experimental') | selectattr('state', 'eq', 'disabled') }}"
|
||||||
failed_when: False
|
loop_control:
|
||||||
|
loop_var: flag
|
||||||
- name: "Enable missing RabbitMQ feature flags"
|
|
||||||
command: "rabbitmqctl enable_feature_flag {{ flag['name'] }}"
|
|
||||||
changed_when: True
|
|
||||||
loop: "{{ _feature_flags.stdout | from_json | rejectattr('stability', 'eq', 'experimental') | selectattr('state', 'eq', 'disabled') }}"
|
|
||||||
loop_control:
|
|
||||||
loop_var: flag
|
|
||||||
when:
|
|
||||||
- _cluster_status.rc == 0
|
|
||||||
- ((_cluster_status.stdout | from_json)['running_nodes'] | length) == (groups[rabbitmq_host_group] | length)
|
|
||||||
- ((_cluster_status.stdout | from_json)['alarms'] | length) == 0
|
|
||||||
- ((_cluster_status.stdout | from_json)['partitions'] | length) == 0
|
|
||||||
tags:
|
|
||||||
- rabbitmq-upgrade
|
|
||||||
|
Loading…
Reference in New Issue
Block a user