Files
homelab-ansible/roles/upgrade/tasks/main.yml
Damien 6b9fccb1ea Rename async job variables for consistency
Rename async job variables in UFW and upgrade roles to follow a
consistent
naming pattern (upgrade_<os>_job) for better maintainability.
2026-06-02 08:13:05 +02:00

60 lines
1.8 KiB
YAML

---
# roles/upgrade/tasks/main.yml
#
# Async pattern: Tailscale may restart during upgrade, dropping SSH.
# Fire and forget → poll status with unreachable tolerance + retries.
- name: Upgrade all packages (Alpine)
community.general.apk:
upgrade: true
update_cache: true
async: 3600
poll: 0
register: upgrade_alpine_job
# By default async job return change: true
# Force adapting the change condition for idempotency
changed_when: false
when: ansible_facts['os_family'] == "Alpine"
- name: Wait for Alpine upgrade
ansible.builtin.async_status:
jid: "{{ upgrade_alpine_job.ansible_job_id }}"
register: upgrade_alpine_result
until: upgrade_alpine_result.finished
retries: 60
delay: 10
# By default async job return change: true
# Force adapting the change condition for idempotency
changed_when: upgrade_alpine_result.changed | default(false)
ignore_unreachable: true
when:
- ansible_facts['os_family'] == "Alpine"
- upgrade_alpine_job.ansible_job_id is defined
- name: Upgrade all packages (Debian)
ansible.builtin.apt:
upgrade: full
update_cache: true
async: 3600
poll: 0
register: upgrade_debian_job
# By default async job return change: true
# Force adapting the change condition for idempotency
changed_when: false
when: ansible_facts['os_family'] == "Debian"
- name: Wait for Debian upgrade
ansible.builtin.async_status:
jid: "{{ upgrade_debian_job.ansible_job_id }}"
register: upgrade_debian_result
until: upgrade_debian_result.finished
retries: 60
delay: 10
# By default async job return change: true
# Force adapting the change condition for idempotency
changed_when: upgrade_debian_result.changed | default(false)
ignore_unreachable: true
when:
- ansible_facts['os_family'] == "Debian"
- upgrade_debian_job.ansible_job_id is defined