48 lines
1.6 KiB
YAML
48 lines
1.6 KiB
YAML
---
|
|
- 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 |