72 lines
2.7 KiB
YAML
72 lines
2.7 KiB
YAML
---
|
|
# Update Hermes Agent on every host in the Ansible `hermes` group.
|
|
# Run with: ansible-playbook -i inventory.yml hermes-update.yml
|
|
|
|
- name: Update Hermes Agent
|
|
hosts: hermes
|
|
gather_facts: true
|
|
serial: 1 # update one Hermes instance at a time so both are not down together
|
|
|
|
vars:
|
|
# Override per-host/group if Hermes is installed somewhere else.
|
|
hermes_bin: "{{ ansible_env.HOME }}/.local/bin/hermes"
|
|
hermes_branch: main
|
|
# Use true for a full HERMES_HOME backup before updating; false keeps Hermes' default quick snapshot.
|
|
hermes_full_backup: true
|
|
|
|
tasks:
|
|
- name: Check Hermes launcher exists
|
|
ansible.builtin.stat:
|
|
path: "{{ hermes_bin }}"
|
|
register: hermes_launcher
|
|
|
|
- name: Fail if Hermes launcher is missing
|
|
ansible.builtin.fail:
|
|
msg: "Hermes launcher not found at {{ hermes_bin }}. Set hermes_bin for this host/group."
|
|
when: not hermes_launcher.stat.exists
|
|
|
|
- name: Show current Hermes version and install info
|
|
ansible.builtin.command: "{{ hermes_bin }} --version"
|
|
register: hermes_version_before
|
|
changed_when: false
|
|
|
|
- name: Show Hermes update plan
|
|
ansible.builtin.command: "{{ hermes_bin }} update --plan --branch {{ hermes_branch }}"
|
|
register: hermes_update_plan
|
|
changed_when: false
|
|
|
|
- name: Check whether Hermes update is available
|
|
ansible.builtin.command: "{{ hermes_bin }} update --check --branch {{ hermes_branch }}"
|
|
register: hermes_update_check
|
|
changed_when: false
|
|
|
|
- name: Update Hermes when needed
|
|
ansible.builtin.command: >-
|
|
{{ hermes_bin }} update --yes --branch {{ hermes_branch }}
|
|
{{ '--backup' if hermes_full_backup else '' }}
|
|
register: hermes_update_result
|
|
when: "'Update available' in hermes_update_check.stdout"
|
|
changed_when: true
|
|
|
|
- name: Verify Hermes is now current
|
|
ansible.builtin.command: "{{ hermes_bin }} update --check --branch {{ hermes_branch }}"
|
|
register: hermes_update_verify
|
|
changed_when: false
|
|
failed_when: >-
|
|
hermes_update_verify.rc != 0 or
|
|
('Update available' in hermes_update_verify.stdout)
|
|
|
|
- name: Show final Hermes version and install info
|
|
ansible.builtin.command: "{{ hermes_bin }} --version"
|
|
register: hermes_version_after
|
|
changed_when: false
|
|
|
|
- name: Print Hermes update summary
|
|
ansible.builtin.debug:
|
|
msg:
|
|
host: "{{ inventory_hostname }}"
|
|
before: "{{ hermes_version_before.stdout_lines }}"
|
|
updated: "{{ 'Update available' in hermes_update_check.stdout }}"
|
|
after: "{{ hermes_version_after.stdout_lines }}"
|
|
verify: "{{ hermes_update_verify.stdout_lines }}"
|