--- # Update all hosts (apt for Linux, pkg for FreeBSD, apk for Alpine). # Usage: ansible-playbook playbooks/update-all.yml - name: Update Linux hosts (apt) hosts: linux ignore_unreachable: true tags: [update, linux] tasks: - name: Apt update + upgrade + autoremove ansible.builtin.apt: update_cache: true upgrade: dist autoremove: true autoclean: true register: apt_result - name: Show upgrade summary ansible.builtin.debug: msg: "{{ apt_result.stdout_lines | default(['No output']) }}" - name: Check if reboot is required ansible.builtin.stat: path: /var/run/reboot-required register: reboot_required - name: Notify if reboot needed ansible.builtin.debug: msg: "WARNING: REBOOT REQUIRED on {{ inventory_hostname }}" when: reboot_required.stat.exists - name: Update Alpine hosts (apk) hosts: alpine ignore_unreachable: true tags: [update, alpine] tasks: - name: Apk update + upgrade community.general.apk: update_cache: true upgrade: true register: apk_result - name: Show upgrade summary ansible.builtin.debug: msg: "{{ apk_result.stdout_lines | default(['No output']) }}" - name: Update FreeBSD hosts (pkg) hosts: freebsd ignore_unreachable: true tags: [update, freebsd] tasks: - name: Pkg update ansible.builtin.command: pkg update -f register: pkg_update_result changed_when: "'Updating' in pkg_update_result.stdout" - name: Pkg upgrade ansible.builtin.command: pkg upgrade -y register: pkg_upgrade_result changed_when: "'upgraded' in pkg_upgrade_result.stdout or 'installed' in pkg_upgrade_result.stdout" - name: Show upgrade summary ansible.builtin.debug: msg: "{{ pkg_upgrade_result.stdout_lines | default(['No output']) }}"