Testen von Ansible Rollen mittels Molecule –

Seit längerem setzen wir bei unseren Kunden und bei uns das Automatisierungstool Ansible für die Installation und Konfiguration von Systemen ein. Mehrere Aufgaben werden bei Ansible in Rollen zusammengefasst. Um diese Rollen zu testen nutzen wir die Testumgebung Molecule.

Molecule führt beim Testen Syntax- und Lint-Checks (Checks, die die Struktur und Lesbarkeit des Codes testen) aus, erstellt dann eine oder mehrere VMs/Container (unterstützt werden als Driver unter anderem Docker, Vagrant, Openstack). Dann wird auf den zu testenden Maschinen das Ansible Playbook ausgeführt und die Idempotenz (das Ansible-Playbook liefert auch bei mehrfacher Ausführung das gleiche Ergebnis) getestet. Zum Schluss kann der Erfolg des Playbooks mittels Testinfra verifiziert werden.

Beispiel

Installation

Molecule lässt sich einfach über Python-Pip installieren:

Eine vollständige Installationsanleitung mit betriebssystemspezifischen Abhängigkeiten ist in der offiziellen Dokumentation zu finden. https://molecule.readthedocs.io/en/latest/installation.html

Konfiguration

Eine neue leere Molecule Rolle lässt sich mittels folgendem Befehl erstellen:

die Konfiguration der Testumgebung erfolgt wie bei Ansible mittels YAML Dateien. Die Hauptkonfiguration bildet dabei die Datei “test-rolle/molecule/default/molecule.yml”

Ausführung

Ein vollständiger Test wird mittels folgendem Befehl ausgeführt:

Um einzelne Test/Aufgaben wie z.B. nur das Playbook auszuführen führt man folgenden Befehl aus:

In der folgenden Datei (tasks/main.yml) wurde ein Fehler bei der Einrückung eingebaut, um den Syntax Check zu testen.

Der Syntax Check zeigt dann die dazugehörige Fehlermeldung mit Stelle im Code an.

Im zweiten Beispiel testen wir den Lint Check. Dieser zeigt an, dass die default Meta-Informationen, mit passenden Werten gefüllt werden sollen. In disem Fall mit Platformen für die das Ansible-Playbook gedacht ist. Auch hier wird wieder die passende Stelle im Code angezeigt.

Fazit

Mit Molecule kann man schnell und einfach Ansible Rollen/Playbooks lokal testen, bevor man Sie produktiv einsetzt.

Testen von Ansible Rollen mittels Molecule
Markiert in: