4.0 KiB
4.0 KiB
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.ymlsowie 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/dmc12.yml playbooks/os-updates-deb.yml
Funktionsweise
tasks/main.yml führt nacheinander folgende Schritte aus:
- Docker-Binary erkennen –
which docker(fehlertolerant) - Docker-Präsenz festhalten – Fakt
healthcheck_docker_installed - Alle Container auflisten –
docker ps -a --format {{.Names}} - Laufende Container auflisten –
docker ps --filter status=running - Container-Health bewerten – Differenz aus allen und laufenden
Containern ergibt
healthcheck_non_running_containers - Gesamtergebnis bestimmen –
healthcheck_all_running,healthcheck_passed - Default-Ergebnis ohne Docker – falls Docker nicht installiert ist,
gilt der Healthcheck als bestanden (
passed: true, 0 Container) - Log-Verzeichnis sicherstellen – delegiert an localhost
- Quality-Gate in Update-Log schreiben –
blockinfilemit Marker# {mark} ANSIBLE-HEALTHCHECK, Abschnittquality_gate: - Fehlschlagen bei ungesunden Containern – nur wenn
healthcheck_fail_on_unhealthygesetzt 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 deros-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.