65 lines
1.7 KiB
YAML
65 lines
1.7 KiB
YAML
---
|
|
- name: Universal Linux System Maintenance
|
|
hosts: linux
|
|
remote_user: root
|
|
# Gather facts once at the start to determine OS family
|
|
gather_facts: yes
|
|
|
|
tasks:
|
|
# --- DEBIAN / UBUNTU / PROXMOX ---
|
|
- name: Debian-based Maintenance
|
|
when: ansible_os_family == "Debian"
|
|
block:
|
|
- name: Update apt cache and upgrade all packages
|
|
apt:
|
|
upgrade: dist
|
|
update_cache: yes
|
|
cache_valid_time: 3600
|
|
|
|
- name: Install baseline toolset (Debian)
|
|
apt:
|
|
name:
|
|
- htop
|
|
- make
|
|
- git
|
|
- curl
|
|
- samba
|
|
- fail2ban
|
|
- sshpass
|
|
- sudo
|
|
state: present
|
|
|
|
- name: Remove obsolete packages and kernels
|
|
apt:
|
|
autoremove: yes
|
|
autoclean: yes
|
|
|
|
# --- RHEL / ALMALINUX / ROCKY ---
|
|
- name: RedHat-based Maintenance
|
|
when: ansible_os_family == "RedHat"
|
|
block:
|
|
- name: Upgrade all packages (DNF)
|
|
dnf:
|
|
name: "*"
|
|
state: latest
|
|
update_cache: yes
|
|
|
|
- name: Install baseline toolset (RHEL)
|
|
dnf:
|
|
name: [htop, make, nano, git, curl, fail2ban, samba, sshpass]
|
|
state: present
|
|
|
|
- name: Clean DNF metadata and cache
|
|
command: dnf clean all
|
|
changed_when: false
|
|
|
|
# --- FINAL CHECK ---
|
|
- name: Check if reboot is required
|
|
stat:
|
|
path: /var/run/reboot-required
|
|
register: reboot_required_file
|
|
|
|
- name: Notify if reboot is needed
|
|
debug:
|
|
msg: "Host {{ inventory_hostname }} requires a reboot to apply updates."
|
|
when: reboot_required_file.stat.exists |