Wenn Unternehmen in regulierten Branchen über Compliance-Automatisierung sprechen, klingt das zunächst einfach: ein paar Playbooks schreiben, regelmäßig ausführen, Report erstellen, fertig. Die Realität sieht anders aus — besonders wenn es um PCI-DSS-Compliance für große VMware-Landschaften mit Tausenden von ESXi-Hosts geht.
In diesem Artikel teile ich meinen Ansatz für die Automatisierung von PCI-DSS-Audits und -Remediations mit Ansible im Enterprise-Maßstab. Es geht um Architekturentscheidungen, die sich bewährt haben, Fallstricke, die man kennen sollte, und eine zentrale Erkenntnis:
Ansible kann Enterprise-Scale-Compliance-Automatisierung bewältigen — aber nur, wenn man es als Software-Engineering-Projekt behandelt und nicht als Scripting-Übung.
Das Problem
Große Unternehmen in regulierten Branchen — Banken, Energieversorger, Reise- und Tourismuskonzerne — betreiben häufig VMware-Landschaften mit Tausenden von ESXi-Hosts, verteilt auf zahlreiche vCenter-Instanzen und mehrere physisch getrennte Rechenzentrumsbereiche. Jeder einzelne Host muss regelmäßig gegen Hardening-Standards geprüft werden: SSH-Konfiguration, NTP-Einstellungen, Syslog-Weiterleitung, Lockdown-Mode, Firewall-Regeln, Passwort-Richtlinien, Active-Directory-Anbindung und mehr.
Die Anforderungen sind klar:
- Prüfung aller Hosts gegen definierte Hardening-Kontrollen
- Remediation von Abweichungen — möglichst automatisiert
- Audit-fähige Reports, die Prüfer verstehen und akzeptieren
- Wiederholbarkeit — das Ganze muss regelmäßig und zuverlässig laufen
Manuelle Prüfung scheidet bei dieser Größenordnung aus. Aber auch eine naive Automatisierung stößt schnell an Grenzen.
Mein Architektur-Ansatz
1. Dynamisches Inventar: Die Grundlage für alles
Bei Tausenden von Hosts, die ständig provisioniert und dekommissioniert werden, ist ein statisches Inventar keine Option. Und wenn die Umgebung über zahlreiche vCenter-Instanzen verteilt ist, wird ein einfaches Inventory-Plugin pro vCenter schnell unhandlich.
Mein Ansatz: Eine einzige, aggregierte Datenquelle als Inventar nutzen. In VMware-Umgebungen bietet sich dafür VCF Operations (ehemals vRealize Operations / Aria Operations) an, das bereits Daten aus allen vCenters sammelt. Daraus lässt sich ein Custom Ansible Inventory Plugin entwickeln, das über die VCF Operations API das gesamte ESXi-Inventar generiert — inklusive automatischer Gruppierung nach vCenter, Cluster, ESXi-Version und Standort.
Warum das wichtig ist:
- Neue Hosts erscheinen automatisch im Inventar
- Dekommissionierte Hosts fallen automatisch weg
- Die Gruppierung ermöglicht gezielte Audit-Läufe (z.B. nur ein bestimmter Cluster oder eine bestimmte ESXi-Version)
Dieses Plugin sollte als Ansible Collection paketiert werden — mit Unit-Tests und Code-Qualitätsprüfungen. Bei einem System dieser Tragweite ist das keine optionale Maßnahme.
2. Ein Playbook für Audit und Remediation
Ein häufiger Fehler ist die Trennung von Audit- und Remediation-Logik in separate Playbooks. Das führt unweigerlich zu Drift: Was geprüft wird und was remediiert wird, läuft auseinander.
Mein Ansatz: Ein einziges Playbook, das beide Modi abdeckt. Ansible bringt mit
dem --check-Mode ein mächtiges, aber oft unterschätztes Feature mit:
ansible-playbook compliance.yml --check→ Audit-Modus: Prüft, ohne zu ändernansible-playbook compliance.yml→ Remediation-Modus: Behebt Abweichungen
Voraussetzung dafür ist eine konsequent idempotente Implementierung aller Tasks. Das bedeutet: Jedes Modul prüft erst den Ist-Zustand und ändert nur, wenn tatsächlich eine Abweichung vorliegt. Läuft das Playbook ein zweites Mal, passiert nichts — es sei denn, es gibt neue Abweichungen.
Die Vorteile:
- Kein Drift zwischen Audit- und Remediation-Logik
- Kollegen können über AWX/AAP mit einem Klick einen Audit auslösen oder eine Remediation starten
- Das System ist auch für Nicht-Entwickler bedienbar
3. Custom Ansible Module statt Community-Module
Für Enterprise-Scale-Compliance reichen die Community-Module
(community.vmware) oft nicht aus. Die Kontrolle über API-Aufrufe,
Fehlerbehandlung und Rückgabewerte muss vollständig in der eigenen Hand liegen.
Mein Ansatz: Eigene Ansible-Module in Python, die direkt mit den vSphere- und ESXi-APIs kommunizieren. Für eine typische VMware-Hardening-Umsetzung entstehen so rund 30 Custom-Module — eines pro Kontrolle.
Warum Custom-Module?
- Volle Kontrolle über das Verhalten im
--check-Mode - Präzise Fehlerbehandlung und Rückgabewerte für den Audit-Report
- Keine Abhängigkeit von externen Collections, die sich ändern können
- Möglichkeit, eigene Module mit Unit-Tests (pytest) zu überprüfen
4. Audit-Trail: Ergebnisse systematisch erfassen
Sämtliche Task-Ergebnisse sollten automatisch und strukturiert erfasst werden — nicht nur in der Ansible-Konsole, sondern in einer Datenbank. Dafür eignet sich ARA (ARA Records Ansible) hervorragend: ein Open-Source-Tool, das über einen Ansible Callback alle Playbook-Ergebnisse aufzeichnet und durchsuchbar macht.
5. Der Compliance-Report: Interaktiv statt statisch
Auditoren wollen keine tabellarischen Spreadsheets mit Tausenden von Zeilen durchscrollen. Sie wollen Antworten auf Fragen wie: „Wie viele Hosts mit ESXi-Version X sind noch nicht compliant?" oder „Welche Kontrollen schlagen im Cluster Y fehl?"
Mein Ansatz: Ein Self-Contained HTML-Report mit eingebettetem JavaScript (jQuery + DataTables). Die Audit-Daten werden als JSON direkt in das HTML eingebettet, ein Python-Skript generiert das Dokument aus der ARA-Datenbank.
Das Ergebnis:
- Farbcodiert — Grün für konforme Hosts, Rot für ausstehende Remediation
- Live filterbar — nach ESXi-Version, vCenter, Cluster oder Compliance-Status
- Dynamische Zusammenfassungen — Statistiken passen sich beim Filtern automatisch an
- Kein Setup nötig — einfach die HTML-Datei öffnen
Dieser Ansatz hat sich im Audit als extrem wertvoll erwiesen. Statt durch endlose Tabellen zu scrollen, können die relevanten Daten live gefiltert und präsentiert werden.

Die Fallstricke
Performance: Stunden, nicht Minuten
Bei Tausenden von Hosts ist Laufzeit eine konstante Herausforderung. Selbst mit optimalen Forks und Batching dauert ein vollständiger Audit-Lauf mehrere Stunden. Die Ursachen:
- Die Natur von Ansible — für jeden Task wird pro Host der Python-Interpreter gestartet und ein API-Call initiiert
- Langsame oder problematische Hosts — ältere Hosts mit Fehlkonfigurationen verursachen API-Timeouts
- Konnektivitätsprobleme — nicht erreichbare Hosts blockieren den Fortschritt
- AWX/AAP-Limits — bei dieser Skala stößt man an Grenzen bei Output-Logs und Job-Laufzeiten
Meine Empfehlungen:
- Segmentierung: Audits nach physischen Rechenzentrumsbereichen oder Clustern aufteilen und sequentiell abarbeiten
- Nachtläufe: Vollständige Audits über Nacht ausführen, mit automatischer Weiterführung nur bei fehlerfreiem Abschluss des vorherigen Segments
- Vorsicht bei Produktions-Workloads: Besondere Sorgfalt bei kritischen Systemen, um keine Incidents auszulösen
- Separate Konnektivitäts-Playbooks: Hosts, die nicht erreichbar sind, vorab identifizieren und — wo möglich — automatisch reparieren
Unerwartete Nebenprodukte
Konnektivitätsprobleme bei einzelnen Hosts führen fast zwangsläufig zur Entwicklung eigener Diagnose- und Reparatur-Playbooks. Was als Hindernis beginnt, wird zu einem eigenständigen Automatisierungs-Werkzeug, das auch außerhalb des Compliance-Kontexts Wert liefert.
Software Engineering trifft Infrastructure as Code
Hier liegt der Kern meiner Überzeugung: Infrastruktur-Automatisierung im Enterprise-Maßstab ist Software-Engineering. Wer sie wie ein Scripting-Projekt behandelt, scheitert an der Komplexität.
Was das konkret bedeutet:
- Ansible Collection als Paketierungseinheit für Inventory-Plugin und Custom-Module
- Unit-Tests (pytest) für alle Python-Komponenten — Inventory-Plugin und Custom-Module
- SonarQube-Integration für statische Code-Analyse — sowohl für Python-Module als auch für Ansible-YAML
- Idempotente Implementierung als Grundprinzip aller Module
- Saubere API-Abstraktion — Custom-Module kapseln die Komplexität der vSphere/ESXi-APIs
- Versionierung und CI/CD — die Collection durchläuft eine Pipeline wie jede andere Software
Ohne diesen Ansatz wird ein Projekt mit 30 Custom-Modulen, einem Inventory-Plugin und einem Report-Generator schlicht unwartbar.
Fazit
Enterprise-Scale-Compliance-Automatisierung mit Ansible ist machbar — aber sie verlangt Disziplin. Hier sind die wichtigsten Prinzipien, die ich aus Projekten dieser Art mitgenommen habe:
- Dynamisches Inventar aus einer aggregierten Quelle beseitigt das größte Hindernis bei großen, verteilten VMware-Umgebungen.
- Ein Playbook für Audit und Remediation mit konsequenter Idempotenz reduziert Komplexität und verhindert Drift.
- Custom-Module sind unvermeidlich. Wer volle Kontrolle über API-Aufrufe, Fehlerbehandlung und Check-Mode-Verhalten braucht, kommt um eigene Python-Module nicht herum.
- Der Report entscheidet über den Audit-Erfolg. Ein interaktives HTML-Dokument schlägt jede statische Tabelle.
- Software-Engineering-Disziplin ist nicht optional. Unit-Tests, Code-Analyse, Collection-Paketierung, CI/CD — ohne diese Praktiken wird ein Projekt dieser Größe unwartbar.
- Laufzeit ist eine Realität. Stunden, nicht Minuten. Planung mit Segmentierung und Nachtläufen ist Teil der Architektur.
Dieser Ansatz ist übertragbar — ob PCI DSS, SOX, ISO 27001 oder andere Compliance-Frameworks. Die Werkzeuge und Muster bleiben die gleichen. Was zählt, ist die Engineering-Disziplin dahinter.
