pvc-ansible/oneshot/update-pvc-daemons.yml

128 lines
3.1 KiB
YAML

---
# Set the cluster into maintenance mode
- hosts: all
remote_user: deploy
become: yes
become_user: root
gather_facts: yes
tasks:
- name: set PVC maintenance mode (legacy)
command: pvc maintenance on
run_once: yes
ignore_errors: yes
- name: set PVC maintenance mode
command: pvc cluster maintenance on
run_once: yes
ignore_errors: yes
# Run the PVC daemon role against the system (update pvc.conf)
- hosts: all
remote_user: deploy
become: yes
become_user: root
gather_facts: yes
tasks:
- set_fact:
this_node: "{{ inventory_hostname.split('.')[0] }}"
- set_fact:
is_coordinator: "{% for node in pvc_nodes if node.hostname == this_node %}{{ node.is_coordinator }}{% endfor %}"
- set_fact:
new_host: no
- name: import PVC daemon role
include_role:
name: pvc
tasks_from: pvc/main.yml
# Install the latest PVC packages & restart daemons to apply
- hosts: all
remote_user: deploy
become: yes
become_user: root
gather_facts: yes
serial: 1
tasks:
- name: install latest PVC packages
apt:
update_cache: yes
autoremove: yes
autoclean: yes
package:
- pvc-client-cli
- pvc-daemon-common
- pvc-daemon-api
- pvc-daemon-node
state: latest
register: packages
- name: clean apt archives
file:
dest: /var/cache/apt/archives
state: absent
- name: clean pycaches
command: 'find /usr/share/pvc -name "__pycache__" -exec rm -r {} \;'
ignore_errors: true
- name: restart daemons cleanly
block:
- name: secondary node
command: 'pvc node secondary --wait {{ ansible_hostname }}'
ignore_errors: true
- name: wait 15 seconds for system to stabilize
pause:
seconds: 15
become: no
connection: local
- name: restart PVC daemons
service:
name: "{{ item }}"
state: restarted
enabled: yes
with_items:
- pvcworkerd
- pvcnoded
- name: wait 15 seconds for system to stabilize
pause:
seconds: 15
become: no
connection: local
- name: get service facts
service_facts:
- name: fail if PVC daemons are not running
fail:
msg: "PVC daemons are not running"
when: ansible_facts.services[item] is not defined or ansible_facts.services[item]["state"] != "running"
with_items:
- pvcnoded.service
- pvcworkerd.service
- name: reset any systemd failures
command: systemctl reset-failed
when: packages.changed
- name: wait 15 seconds for system to stabilize
pause:
seconds: 15
become: no
connection: local
# Set the cluster out of maintenance mode
- hosts: all
remote_user: deploy
become: yes
become_user: root
gather_facts: yes
tasks:
- name: unset PVC maintenance mode
command: pvc cluster maintenance off
run_once: yes