validators/deploy/rolling-restart.yaml

73 lines
1.8 KiB
YAML

- hosts: validators
remote_user: ubuntu
become: yes
max_fail_percentage: 30
serial: 10
tasks:
- name: remove from load balancers
replace:
path: /etc/nginx/sites-available/validator.conf
regexp: '^(\s*)(server {{ inventory_hostname }}:\d+ .*;)\s*$'
replace: '\1# \2 # removed for restart'
delegate_to: "{{ item }}"
with_items: "{{ groups.load_balancers }}"
throttle: 1
register: result
failed_when: result is not changed
- name: reload nginx
service:
name: nginx
state: reloaded
delegate_to: "{{ item }}"
with_items: "{{ groups.load_balancers }}"
run_once: yes
- name: wait for connections to close
wait_for:
timeout: 10
- name: restart validator
command: supervisorctl restart validator
- name: wait for validator to start up
wait_for:
port: 8899
delay: 60
- name: wait for validator to catch up
uri:
url: http://localhost:8899/health
return_content: yes
register: result
until: "result.content == 'ok'"
retries: 200
delay: 10
- name: wait for validator to fully catch up
wait_for:
timeout: 120
- name: add back to load balancers
replace:
path: /etc/nginx/sites-available/validator.conf
regexp: '^(\s*)# (server {{ inventory_hostname }}:\d+ .*;) # removed for restart$'
replace: '\1\2'
delegate_to: "{{ item }}"
with_items: "{{ groups.load_balancers }}"
throttle: 1
register: result
failed_when: result is not changed
- hosts: validators
remote_user: ubuntu
become: yes
tasks:
- name: reload nginx one last time
service:
name: nginx
state: reloaded
delegate_to: "{{ item }}"
with_items: "{{ groups.load_balancers }}"
run_once: yes