Files
ansible-playbooks/roles/healthcheck/README.md
T
DerLinkman 30f3e9a4c6 rename dmc12 inventory to cloudlorean and vault admin_password
- replace inventory/dmc12.yml with cloudlorean.yml (+ group_vars) and update
  all README/AGENTS call examples and the inventory table
- move admin_password hash into encrypted vault.yml; remove plaintext copies
  from roles/bootstrap/defaults and group_vars/external.yml
- bootstrap.yml loads vault.yml via vars_files (same pattern as monitoring)
- monitoring: PSK config/registration updates, docker role defaults,
  os-updates logging/reboot refinements, ansible.cfg/execute.sh tweaks
- add .project-wiki knowledge base and .github agent instructions
2026-09-09 14:14:18 +02:00

4.0 KiB
Raw Blame History

Rolle healthcheck

Post-Update Quality-Gate. Die Rolle prüft nach einem OS-Update, ob alle Docker-Container wieder laufen, und protokolliert das Ergebnis im selben Update-Log, das auch von der os-updates-Rolle verwendet wird.

Siehe auch das Playbook playbooks/os-updates-deb.yml sowie die Repo-README.

Voraussetzungen

  • Debian-Ziel-Host
  • Optional installiertes Docker (wird automatisch erkannt)
  • Idealerweise vorheriger Lauf der os-updates-Rolle (für gemeinsames Log)

Einbindung

Die Rolle ist fest in playbooks/os-updates-deb.yml nach der os-updates- Rolle eingebunden und wird in der Regel nicht separat aufgerufen:

- hosts: all
  become: true
  user: admin
  roles:
    - role: os-updates
    - role: healthcheck
ansible-playbook -i inventory/cloudlorean.yml playbooks/os-updates-deb.yml

Funktionsweise

tasks/main.yml führt nacheinander folgende Schritte aus:

  1. Docker-Binary erkennen – which docker (fehlertolerant)
  2. Docker-Präsenz festhalten – Fakt healthcheck_docker_installed
  3. Alle Container auflisten – docker ps -a --format {{.Names}}
  4. Laufende Container auflisten – docker ps --filter status=running
  5. Container-Health bewerten – Differenz aus allen und laufenden Containern ergibt healthcheck_non_running_containers
  6. Gesamtergebnis bestimmen – healthcheck_all_running, healthcheck_passed
  7. Default-Ergebnis ohne Docker – falls Docker nicht installiert ist, gilt der Healthcheck als bestanden (passed: true, 0 Container)
  8. Log-Verzeichnis sicherstellen – delegiert an localhost
  9. Quality-Gate in Update-Log schreiben – blockinfile mit Marker # {mark} ANSIBLE-HEALTHCHECK, Abschnitt quality_gate:
  10. Fehlschlagen bei ungesunden Containern – nur wenn healthcheck_fail_on_unhealthy gesetzt ist

Variablen

Variable Typ Default Beschreibung
healthcheck_logging_enabled bool {{ os_update_logging_enabled | default(true) }} Logging aktivieren
healthcheck_log_dir string {{ os_update_log_dir | default('/ansible/logs') }} Basis-Verzeichnis für Logs
healthcheck_log_inventory string {{ inventory_file | basename | splitext | first }} Inventory-Name (abgeleitet)
healthcheck_log_file string <log_dir>/<inventory>/<hostname>/update.log Pfad zur Update-Log-Datei
healthcheck_fail_on_unhealthy bool false Playbook fehlschlagen lassen, wenn Container nicht laufen

Die Variablen leiten sich standardmäßig aus den Werten der os-updates-Rolle ab, sodass beide Rollen in dasselbe Log schreiben.

Templates

Keine Templates.

Handler

Keine Handler.

Tags

Die Rolle vergibt keine eigenen Tags.

Abhängigkeiten

  • Keine weiteren Rollen.
  • Collections: ansible.builtin (Bordmittel).
  • Empfohlener Partner: os-updates-Rolle (für gemeinsames Log-Format).

Hinweise

  • Wird Docker nicht gefunden, gilt der Healthcheck als bestanden – nützlich für Hosts, die keine Container betreiben.
  • Das Log wird delegiert auf localhost geschrieben (auf dem Ansible- Controller), nicht auf dem Zielhost. Das Verzeichnis logs/ ist git-ignored.
  • Die quality_gate-Sektion im Log ist an denselben Eintrag gekoppelt wie der os-updates-Preflight, sodass ein Update-Lauf inkl. Healthcheck nachvollziehbar dokumentiert ist.
  • healthcheck_fail_on_unhealthy: false (Default) bricht das Playbook nicht ab – bewusst gewählt, damit nach Updates nicht versehentlich ganze Host-Gruppen blockiert werden. Für kritische Hosts individuell setzen.