forked from jakub/ansible
86 lines
2.1 KiB
YAML
86 lines
2.1 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: "{{ ansible_host | default(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: Update snap packages
|
|
command: snap refresh
|
|
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 |