--- - name: System Status Report for all hosts hosts: all gather_facts: yes become: yes vars: pkg_mgr: "{{ ansible_pkg_mgr }}" tasks: - name: Collect hostname ansible.builtin.set_fact: sys_hostname: "{{ ansible_hostname }}" - name: Collect all IPv4 addresses ansible.builtin.set_fact: sys_ipv4: "{{ ansible_all_ipv4_addresses }}" - name: Collect uptime ansible.builtin.command: uptime -p register: uptime_raw changed_when: false - name: Set pkg_mgr fact from gathered facts ansible.builtin.set_fact: pkg_mgr: "{{ ansible_pkg_mgr }}" - name: Check pending upgrades (APT) ansible.builtin.shell: | apt list --upgradable 2>/dev/null | grep -v 'Listing...' when: pkg_mgr == "apt" register: pending_updates_apt changed_when: false - name: Check pending upgrades (DNF/YUM) ansible.builtin.command: dnf check-update when: pkg_mgr in ["dnf", "yum"] register: pending_updates_dnf failed_when: false changed_when: false - name: Check pending upgrades (Pacman) ansible.builtin.command: pacman -Qu when: pkg_mgr == "pacman" register: pending_updates_pacman failed_when: false changed_when: false - name: Build update list fact ansible.builtin.set_fact: sys_updates: >- {% if pkg_mgr == "apt" %} {{ pending_updates_apt.stdout_lines | default([]) }} {% elif pkg_mgr in ["dnf", "yum"] %} {{ pending_updates_dnf.stdout_lines | default([]) }} {% elif pkg_mgr == "pacman" %} {{ pending_updates_pacman.stdout_lines | default([]) }} {% else %} [] {% endif %} - name: Print system status summary ansible.builtin.debug: msg: - "Hostname: {{ sys_hostname }}" - "IPv4 Addresses: {{ sys_ipv4 }}" - "Uptime: {{ uptime_raw.stdout }}" - "Package Manager: {{ pkg_mgr }}" - "Pending Updates:" - "{{ sys_updates | default('Keine Updates verfügbar') }}"