--- - name: Update CentOS Stream 9 Halo Servers hosts: centos_stream become: yes tasks: - name: Check for logged in users shell: who | wc -l register: logged_users changed_when: false - name: Display logged in user count debug: msg: "{{ logged_users.stdout }} user(s) currently logged in" - name: Check if we should skip this host set_fact: skip_updates: "{{ logged_users.stdout | int > 1 }}" - name: Host will be skipped due to logged in users debug: msg: "Host: {{ inventory_hostname }} - Skipping updates due to {{ logged_users.stdout }} users logged in" when: skip_updates - name: Ensure all packages are up to date dnf: name: '*' state: latest update_cache: yes register: dnf_result when: not skip_updates - name: Display package update statistics debug: msg: - "Host: {{ inventory_hostname }}" - "Packages installed: {{ dnf_result.results | select('match', '^Installed:.*') | list | length }}" - "Packages updated: {{ dnf_result.results | select('match', '^Updated:.*') | list | length }}" - "Packages removed: {{ dnf_result.results | select('match', '^Removed:.*') | list | length }}" when: not skip_updates and dnf_result.changed and dnf_result.results is defined - name: No updates needed debug: msg: "Host: {{ inventory_hostname }} - System is already up to date" when: not skip_updates and not dnf_result.changed - name: Rebooting the servers reboot: when: not skip_updates and dnf_result.changed