Files
pvc-ansible/oneshot/update-pvc-daemons.yml
Joshua M. Boniface 15fc3261de Add PVC role tasks to update-pvc-daemons
Ensures that configurations are always updated whenever the daemons are.
This will be necessary for 0.9.83 with the fundamental change from
pvcXd.yaml to pvc.conf configuration formats, while also ensuring that
future daemon updates also include any configuration changes that may be
pending in the group_vars.
2023-12-01 01:37:39 -05:00

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