Files
ansible/update.yml
2026-03-11 16:02:07 +00:00

82 lines
1.9 KiB
YAML

---
- name: Update system (APT + Flatpak)
hosts: all
become: yes
gather_facts: yes
serial: 5
tasks:
- name: Ensure SSH is reachable (skip host if not)
delegate_to: localhost
wait_for:
host: "{{ inventory_hostname }}"
port: 22
timeout: 5
register: ssh_check
ignore_errors: yes
- meta: end_host
when: ssh_check is failed
- name: Ping with retries (handle intermittent flaps)
ping:
register: ping_result
retries: 5
delay: 5
until: ping_result is success
- name: Wait for apt lock to be released
shell: |
while fuser /var/lib/dpkg/lock-frontend >/dev/null 2>&1; do
echo "Waiting for apt lock..."
sleep 5
done
changed_when: false
- name: Update apt cache
apt:
update_cache: yes
- name: Perform full upgrade
apt:
upgrade: full
autoremove: yes
autoclean: yes
register: apt_upgrade
retries: 3
delay: 10
until: apt_upgrade is succeeded
- name: Fix broken packages
command: apt-get -f install -y
register: fix_result
failed_when: false
changed_when: "'Setting up' in fix_result.stdout"
- name: Check if Flatpak is installed
command: which flatpak
register: flatpak_check
failed_when: false
changed_when: false
- name: Update Flatpak packages
command: flatpak update -y
when: flatpak_check.rc == 0
register: flatpak_update
failed_when: false
- name: Remove unused Flatpak packages
command: flatpak uninstall --unused -y
when: flatpak_check.rc == 0
failed_when: false
- name: Check if reboot is required
stat:
path: /var/run/reboot-required
register: reboot_required
- name: Notify if reboot required
debug:
msg: "Reboot required on {{ inventory_hostname }}"
when: reboot_required.stat.exists