Skip to content

Commit 9a70b75

Browse files
authored
Merge pull request #286 from stackhpc/rabbitmq-reset-2
Hammer playbook for rabbitmq
2 parents 00c46a6 + 3933e45 commit 9a70b75

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
---
2+
# Reset a broken RabbitMQ cluster.
3+
# Also restarts OpenStack services which may be broken.
4+
5+
- name: Reset RabbitMQ
6+
hosts: controllers
7+
become: True
8+
gather_facts: no
9+
tags:
10+
- rabbitmq-reset
11+
vars:
12+
- container_name: rabbitmq
13+
tasks:
14+
- name: Inspect the {{ container_name }} container
15+
shell:
16+
cmd: "docker container inspect --format '{{ '{{' }} .State.Running {{ '}}' }}' {{ container_name }}"
17+
register: inspection
18+
19+
- name: Ensure the {{ container_name }} container is running
20+
command: "docker start {{ container_name }}"
21+
when: inspection.stdout == 'false'
22+
23+
- name: Wait for the {{ container_name }} container to reach state 'Running'
24+
shell:
25+
cmd: "docker container inspect --format '{{ '{{' }} .State.Running {{ '}}' }}' {{ container_name }}"
26+
register: result
27+
until: result.stdout == 'true'
28+
retries: 10
29+
delay: 6
30+
31+
- name: Wait for the rabbitmq node to automatically start on container start
32+
command: "docker exec -it {{ container_name }} /bin/bash -c 'rabbitmqctl wait /var/lib/rabbitmq/mnesia/rabbitmq.pid --timeout 60'"
33+
when: inspection.stdout == 'false'
34+
35+
- name: Stop app
36+
command: "docker exec -it {{ container_name }} /bin/bash -c 'rabbitmqctl stop_app'"
37+
38+
- name: Force reset app
39+
command: "docker exec -it {{ container_name }} /bin/bash -c 'rabbitmqctl force_reset'"
40+
41+
- name: Start app
42+
command: "docker exec -it {{ container_name }} /bin/bash -c 'rabbitmqctl start_app'"
43+
44+
- name: Wait for all nodes to join the cluster
45+
command: "docker exec -it {{ container_name }} /bin/bash -c 'rabbitmqctl await_online_nodes {{ groups['controllers'] | length }}'"
46+
47+
- name: Restart OpenStack services
48+
hosts: controllers:compute
49+
become: true
50+
gather_facts: no
51+
tags:
52+
- restart-openstack
53+
tasks:
54+
# The following services can have problems if the cluster gets broken.
55+
- name: Restart OpenStack services
56+
shell: >-
57+
docker ps -a | egrep '(cinder|heat|ironic|keystone|magnum|neutron|nova)' | awk '{ print $NF }' | xargs docker restart

0 commit comments

Comments
 (0)