Ursprünglich plante ich, Woodpecker für die Überprüfung meiner Ansible-Dateien einzusetzen. Als die initiale Strategie nicht optimal funktionierte, entwickelte ich ein lokales Skript, das vor jedem Commit alle geänderten Dateien automatisch prüft. Was zunächst wie eine pragmatische Anpassung aussah, entwickelte sich zu einem unverzichtbaren Werkzeug in meinem Entwicklungsprozess.
Was macht das Skript?
Das Skript .helper/validate_ansible.sh
ist ein Validierungstool für Ansible-Projekte. Es führt verschiedene Checks durch, die sicherstellen, dass meine Infrastruktur-als-Code sauber, konsistent und fehlerfrei bleibt.
Funktionen
Syntax-Prüfung für YAML-Dateien
- Verwendet
ansible-playbook --syntax-check
- Prüft Playbooks, Rolle-Tasks und andere YAML-Dateien
- Erkennt Strukturfehler bereits vor dem Commit
- Verwendet
Ansible-Lint
- Zusätzliche Qualitätsprüfung der Ansible-Dateien
- Gibt Hinweise bei Verbesserungsmöglichkeiten
- Hilft, Best Practices einzuhalten
Inventar-Validierung
- Überprüft Inventar-Dateien mit
ansible-inventory
- Erkennt Konfigurationsunstimmigkeiten
- Stellt sicher, dass Hostgruppen und Variablen korrekt definiert sind
- Überprüft Inventar-Dateien mit
Jinja2 Template-Check
- Validiert Syntax von
.j2
Template-Dateien - Stellt sicher, dass Templates korrekt aufgebaut sind
- Verhindert Rendering-Fehler zur Laufzeit
- Validiert Syntax von
Flexibilität der Nutzung
Das Skript kann in verschiedenen Modi ausgeführt werden:
- Standard: Prüft nur git-veränderte Dateien
--all
: Prüft alle Dateien im Projekt- Selektive Prüfung: Nur Playbooks, Inventare oder Templates nach Bedarf
Integration als Git-Hook
Um die Prüfung direkt beim Commit zu erzwingen, habe ich einen .git/hooks/pre-commit
Hook implementiert:
|
|
Dieser Hook stellt sicher, dass kein potenziell problematischer Code committed werden kann.
Vorteile
- Automatische Qualitätssicherung
- Frühe Fehlererkennung
- Konsistente Code-Qualität
- Nahtlose Integration in Entwicklungsprozess
- Reduzierung manueller Überprüfungen
- Erhöhung der Infrastruktur-Stabilität
Technische Details
- Sprache: Bash-Skript
- Abhängigkeiten:
Fazit
Was als pragmatische Lösung begann, entwickelte sich zu einem robusten Werkzeug. Das Skript spart nicht nur Zeit, sondern erhöht auch die Qualität und Zuverlässigkeit meiner Ansible-Infrastruktur. Es ist ein Paradebeispiel dafür, wie kleine, selbstentwickelte Tools große Herausforderungen elegant bewältigen können.
Tipp: Investiere Zeit in Automatisierung und Validierung - es zahlt sich immer aus!