Files
operating-automation/docs/08-Cleanup-Aufgaben.md
Ansible Servercow da81549161 add docs
2026-06-11 18:04:41 +02:00

13 KiB

Cleanup-Aufgaben

Übersicht

Diese Kategorie umfasst Wartungs- und Bereinigungsroutinen für verschiedene Systemkomponenten. Regelmäßige Cleanup-Aufgaben sind wichtig für Speicherplatz-Management, Performance-Optimierung und System-Hygiene.

Anwendungsfälle:

  • Löschen alter Proxmox-Snapshots
  • Bereinigung ungenutzter CheckMK-Agent-Plugins
  • Entfernung veralteter Docker-Images und -Container
  • Speicherplatz-Freigabe

Playbooks

cleanups/clean-pve-snapshots.yml

Löschen von Proxmox VE Snapshots auf VM-Hosts.

Datei: playbooks/cleanups/clean-pve-snapshots.yml

Zweck: Bereinigung aller Proxmox-VM-Snapshots (außer "current") zur Freigabe von Speicherplatz nach erfolgreichen Updates oder Wartungsarbeiten.

Ziel-Hosts: all

Benutzer: tincadmin (mit sudo-Rechten)

Verwendete Rollen:

  • proxmox-automation (get-vmid, delete-snapshots)

Wichtige Variablen:

  • Keine (verwendet Vault-Variablen)

Verwendungsbeispiel:

# Alle Snapshots auf allen VMs entfernen
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
  -i inventories/icp-fra-pve1.yml \
  -K --ask-vault-pass

# Nur für spezifische Hosts
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
  -i inventories/icp-fra-pve1.yml \
  --limit mail-server-01.example.com \
  -K --ask-vault-pass

# Mit Verbose-Output
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
  -i inventories/icp-fra-pve1.yml \
  -v \
  -K --ask-vault-pass

Abhängigkeiten:

  • Vault-Datei (vault.yml) für Proxmox API-Tokens
  • Hosts müssen Proxmox-VMs sein
  • Proxmox API-Zugriff

Besonderheiten:

  • gather_facts: false - Keine Fact-Sammlung für Performance
  • Löscht ALLE Snapshots außer "current" (aktiver VM-Zustand)
  • Snapshot-ID-Abruf vor Löschung
  • API-basiert - Delegiert zu localhost

Workflow:

  1. Lädt Vault-Datei mit Proxmox-Zugangsdaten
  2. Für jeden Host:
    • Ermittelt Proxmox VM-ID
    • Listet alle Snapshots auf
    • Filtert "current" aus
    • Löscht alle verbleibenden Snapshots
  3. Gibt Speicherplatz frei

⚠️ Warnung: Dieses Playbook löscht ALLE Snapshots! Stellen Sie sicher, dass keine wichtigen Snapshots mehr benötigt werden.

Wann verwenden:

  • Nach erfolgreichen OS-Major-Upgrades
  • Nach erfolgreichen Mailcow-Updates
  • Monatliche Speicherplatz-Bereinigung
  • Vor großen Updates (alte Snapshots entfernen, neue erstellen)

Siehe auch: Virtualisierung → delete-snapshots.yaml


cleanups/cleanup-cmk-agent-plugins.yml

Bereinigung von CheckMK-Agent-Plugins auf überwachten Hosts.

Datei: playbooks/cleanups/cleanup-cmk-agent-plugins.yml

Zweck: Entfernung nicht benötigter oder veralteter CheckMK-Agent-Plugins zur Reduzierung des Monitoring-Overheads.

Ziel-Hosts: all

Benutzer: tincadmin (mit sudo-Rechten)

Verwendete Rollen:

  • checkmk-monitoring (Task: cleanup-agent-plugins)

Wichtige Variablen:

  • checkmk_agent_plugins_to_remove (aus Rolle)

Verwendungsbeispiel:

# Standard-Cleanup (entfernt Plugins aus defaults/main.yaml)
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
  -i inventories/icp-fra-pve1.yml \
  -K

# Mit custom Plugin-Liste
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
  -i inventories/icp-fra-pve1.yml \
  -e '{"checkmk_agent_plugins_to_remove": ["docker-mailq-monitoring", "old-plugin"]}' \
  -K

# Nur auf Mail-Servern
ansible-playbook playbooks/cleanups/cleanup-cmk-agent-plugins.yml \
  -i inventories/extern.yml \
  -K

Abhängigkeiten:

  • checkmk-monitoring Rolle
  • CheckMK-Agent muss installiert sein

Besonderheiten:

  • Minimales Playbook - Nur Rollen-Aufruf
  • gather_facts: false - Performance-Optimierung
  • Idempotent - Mehrfache Ausführung sicher

Workflow:

  1. Liest Plugin-Liste aus checkmk_agent_plugins_to_remove
  2. Für jeden Host:
    • Lokalisiert CheckMK-Agent-Plugin-Verzeichnis
    • Löscht spezifizierte Plugins
    • Bereinigt zugehörige Konfigurationsdateien
  3. CheckMK-Agent wird automatisch neu geladen

Standard-Plugins zur Entfernung (aus roles/checkmk-monitoring/defaults/main.yaml):

checkmk_agent_plugins_to_remove:
  - "docker-mailq-monitoring"

Wann verwenden:

  • Nach Migration zu alternativen Monitoring-Lösungen
  • Nach Dekommissionierung von Services
  • Bei Performance-Problemen durch zu viele Plugins
  • Regelmäßige Bereinigung (quartalsweise)

Plugin-Verzeichnisse (typisch):

  • /usr/lib/check_mk_agent/plugins/
  • /usr/lib/check_mk_agent/local/
  • /etc/check_mk/

Siehe auch: Monitoring → Rolle checkmk-monitoring


Docker-Cleanup-Playbooks

Die Docker-Cleanup-Playbooks sind in der Container-Management-Kategorie dokumentiert:

Diese Playbooks sind ebenfalls Teil der Cleanup-Strategie und sollten regelmäßig ausgeführt werden.


Cleanup-Strategie und Best Practices

1. Regelmäßige Ausführung

Empfohlener Cleanup-Zeitplan:

Aufgabe Häufigkeit Playbook Begründung
Docker-Images Wöchentlich docker/cleanup-images.yml Speicherplatz-Management
Proxmox-Snapshots Monatlich cleanups/clean-pve-snapshots.yml Nach erfolgreichen Updates
CMK-Agent-Plugins Quartalsweise cleanups/cleanup-cmk-agent-plugins.yml Nach Plugin-Änderungen
Docker-Full-Cleanup Monatlich docker/cleanup-all.yml Vollständige Bereinigung

2. Automatisierung mit Cron/Systemd-Timer

Beispiel Cron-Job (auf Ansible-Control-Node):

# /etc/cron.d/ansible-cleanup

# Wöchentliches Docker-Image-Cleanup (Sonntag 02:00 Uhr)
0 2 * * 0 ansible-user /usr/local/bin/cleanup-docker-images.sh

# Monatliches Snapshot-Cleanup (1. des Monats, 03:00 Uhr)
0 3 1 * * ansible-user /usr/local/bin/cleanup-snapshots.sh

Wrapper-Script (/usr/local/bin/cleanup-docker-images.sh):

#!/bin/bash
cd /opt/operating-automation
ansible-playbook playbooks/docker/cleanup-images.yml \
  -i inventories/icp-fra-pve1.yml \
  >> /var/log/ansible-cleanup.log 2>&1

3. Pre-Cleanup-Checks

Vor größeren Cleanups:

# 1. Überprüfen Sie aktuelle Snapshot-Liste
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "qm listsnapshot \$(qm list | grep $(hostname) | awk '{print \$1}')" \
  -b

# 2. Überprüfen Sie Docker-Speichernutzung
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "docker system df" \
  -b

# 3. Überprüfen Sie CheckMK-Plugins
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "ls -la /usr/lib/check_mk_agent/plugins/" \
  -b

4. Post-Cleanup-Verifizierung

Nach Cleanup-Operationen:

# 1. Verifizieren Sie freigegebenen Speicherplatz
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "df -h /" \
  -b

# 2. Überprüfen Sie Service-Status
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "systemctl status docker check-mk-agent" \
  -b

# 3. Überprüfen Sie ob kritische Snapshots gelöscht wurden
# (manuell im Proxmox Web-Interface)

5. Backup vor Cleanup

Für sicherheitskritische Cleanups:

# 1. Erstellen Sie neue Snapshots BEVOR Sie alte löschen
ansible-playbook playbooks/os-update.yml \
  -e "do_snapshots=true" \
  -e "snapshot_name=pre-cleanup-$(date +%Y%m%d)" \
  -i inventories/... \
  -K --ask-vault-pass

# 2. Dann Cleanup durchführen
ansible-playbook playbooks/cleanups/clean-pve-snapshots.yml \
  -i inventories/... \
  -K --ask-vault-pass

Speicherplatz-Monitoring

Speichernutzung überwachen

# Gesamte Festplattennutzung
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "df -h | grep -E 'Filesystem|/$'" \
  -b

# Docker-Speichernutzung detailliert
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "docker system df -v" \
  -b

# Proxmox-Storage-Status
pvesm status

Top-Speicherverbraucher identifizieren

# Größte Verzeichnisse finden
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "du -h / --max-depth=2 2>/dev/null | sort -rh | head -20" \
  -b

# Docker-Volume-Größen
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "docker system df -v | grep VOLUME -A 100" \
  -b

Fehlerbehebung

Problem: Snapshot-Cleanup schlägt fehl

Symptome: delete-snapshots Task meldet Fehler

Lösung:

  1. Überprüfen Sie Proxmox-API-Zugangsdaten in Vault
  2. Überprüfen Sie ob Snapshots tatsächlich existieren:
    qm listsnapshot <vmid>
    
  3. Versuchen Sie manuelles Löschen:
    qm delsnapshot <vmid> <snapshot-name>
    
  4. Überprüfen Sie Proxmox-Logs:
    journalctl -u pveproxy -n 100
    

Problem: Plugin-Cleanup entfernt benötigte Plugins

Symptome: CheckMK-Services fehlen nach Cleanup

Prävention:

  • Überprüfen Sie checkmk_agent_plugins_to_remove Liste vor Ausführung
  • Testen Sie auf einzelnem Host zuerst

Lösung:

  1. Re-installation des CheckMK-Agents:
    ansible-playbook playbooks/reinstall-cmk-agent.yml
    
  2. Service-Discovery neu ausführen:
    ansible-playbook playbooks/setup-checkmk-monitoring.yml \
      --limit affected-host
    

Problem: Docker-Cleanup löscht benötigte Images

Symptome: Container können nicht starten nach Cleanup

Prävention:

  • Verwenden Sie cleanup-images.yml statt cleanup-all.yml für konservatives Cleanup
  • Stellen Sie sicher alle Container laufen vor cleanup-all.yml

Lösung:

  1. Re-pull Images:
    cd /opt/mailcow-dockerized
    docker-compose pull
    docker-compose up -d
    

Problem: Zu wenig Speicherplatz freigegeben

Symptome: Nach Cleanup immer noch hohe Speichernutzung

Lösung:

  1. Identifizieren Sie Top-Verbraucher:
    du -h / --max-depth=2 | sort -rh | head -20
    
  2. Überprüfen Sie Log-Dateien:
    journalctl --vacuum-size=100M
    find /var/log -type f -name "*.log" -size +100M
    
  3. Bereinigen Sie alte Kernels:
    apt autoremove --purge
    
  4. Überprüfen Sie Mailcow-Logs:
    cd /opt/mailcow-dockerized
    du -sh data/logs/*
    # Bereinigen Sie alte Logs manuell
    

Erweiterte Cleanup-Operationen

APT-Cache-Bereinigung

# Auf allen Hosts
ansible all -i inventories/icp-fra-pve1.yml \
  -m apt -a "autoclean=yes" \
  -b

ansible all -i inventories/icp-fra-pve1.yml \
  -m apt -a "autoremove=yes purge=yes" \
  -b

Journalctl-Log-Rotation

# Logs älter als 30 Tage löschen
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "journalctl --vacuum-time=30d" \
  -b

# Logs auf max 500MB begrenzen
ansible all -i inventories/icp-fra-pve1.yml \
  -m shell -a "journalctl --vacuum-size=500M" \
  -b

Alte Kernel-Versionen entfernen

# Automatische Entfernung alter Kernels (Debian)
ansible all -i inventories/icp-fra-pve1.yml \
  -m apt -a "autoremove=yes purge=yes" \
  -b

Mailcow-Log-Bereinigung

# Alte Mailcow-Logs löschen (älter als 30 Tage)
ansible all -i inventories/extern.yml \
  -m shell -a "find /opt/mailcow-dockerized/data/logs -type f -mtime +30 -delete" \
  -b

Cleanup-Checkliste

Verwenden Sie diese Checkliste für monatliche Wartung:

  • Pre-Check: Speichernutzung dokumentieren
  • Backup: Wichtige Snapshots oder Backups erstellen
  • Docker-Images: playbooks/docker/cleanup-images.yml ausführen
  • Proxmox-Snapshots: playbooks/cleanups/clean-pve-snapshots.yml ausführen (nach erfolgreichen Updates)
  • CMK-Plugins: playbooks/cleanups/cleanup-cmk-agent-plugins.yml ausführen (quartalsweise)
  • APT-Cache: apt autoclean und apt autoremove auf allen Hosts
  • Logs: Journalctl und Application-Logs rotieren
  • Post-Check: Speicherplatz-Freigabe verifizieren
  • Monitoring: Services und Container-Status prüfen
  • Dokumentation: Cleanup-Ergebnisse dokumentieren

Nützliche Kommandos

Speicherplatz-Analyse

# Top 10 größte Verzeichnisse
ansible all -i inventories/... \
  -m shell -a "du -h / --max-depth=2 2>/dev/null | sort -rh | head -10" \
  -b

# Inode-Nutzung
ansible all -i inventories/... \
  -m shell -a "df -i" \
  -b

Cleanup-Status

# Anzahl Docker-Images
ansible all -i inventories/... \
  -m shell -a "docker images | wc -l" \
  -b

# Anzahl Snapshots pro VM
pvesh get /nodes/<node>/qemu/<vmid>/snapshot

# CheckMK-Plugin-Liste
ansible all -i inventories/... \
  -m shell -a "ls /usr/lib/check_mk_agent/plugins/ | wc -l" \
  -b

Zusammenfassung

Cleanup-Aufgaben sind essentiell für:

  • Speicherplatz-Management: Verhindert Disk-Full-Situationen
  • Performance: Reduziert Overhead durch alte Snapshots/Images
  • Sicherheit: Entfernt veraltete Software-Komponenten
  • Compliance: Erfüllt Datenaufbewahrungsrichtlinien
  • Wartungsfreundlichkeit: Übersichtlichere Systeme

Empfohlene Cleanup-Routine:

  1. Wöchentlich: Docker-Image-Cleanup
  2. Monatlich: Vollständiges Docker-Cleanup, APT-Cache
  3. Nach Updates: Proxmox-Snapshot-Cleanup
  4. Quartalsweise: CheckMK-Plugin-Cleanup, Log-Rotation

Navigation: ← Zurück: Basis-System | Zurück zur Übersicht