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.
128 lines
3.1 KiB
YAML
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
|