Einführung
Level kann Ansible-Playbooks auf verwalteten Geräten über seine Skript-Engine ausführen. Der wesentliche Unterschied zu einem typischen Ansible-Setup: Level verwendet keinen zentralen Steuerknoten. Jedes Gerät lädt das Playbook herunter und führt es lokal aus, während Level die Ausgabe in Echtzeit an Ihre Konsole streamt.
Dieser Leitfaden behandelt das Ausführungsmodell, die Erstellung eines Level-Skripts, das ansible-playbook, und wie Windows-Endpunkte vorbereitet werden, die eine POSIX-kompatible Umgebung zum Ausführen von Ansible benötigen.
⚙️ VORAUSSETZUNGEN
Ansible auf jedem Zielgerät installiert (kein zentraler Steuerknoten – siehe unten)
Für Unix/macOS/Linux-Geräte:
ansibleundansible-playbookverfügbar inPATHFür Windows-Geräte: eine POSIX-kompatible Umgebung (WSL oder Cygwin/Git Bash) mit installiertem Ansible
Level-Agent auf allen Zielgeräten bereitgestellt
Wie Level Ansible-Playbooks ausführt
Standard-Ansible verwendet einen zentralen Steuerrechner, um per SSH auf Zielhosts zuzugreifen und Aufgaben remote auszuführen. Das Modell von Level ist anders: Jedes Gerät führt das Playbook lokal auf sich selbst aus.
Wenn ein Level-Skript, das einen ansible-playbook Befehl auf einem Gerät ausgeführt wird:
Das Skript (und alle angehängten Playbook-Dateien) werden auf das Gerät heruntergeladen.
Das Gerät führt
ansible-playbooklokal unter Verwendung seiner eigenen Ansible-Installation.Der Level-Agent erfasst stdout/stderr und streamt es an die Level-Konsole, während das Playbook ausgeführt wird.
Das bedeutet, dass Ansible auf jedem Gerät installiert sein muss, nicht nur auf einem zentralen Rechner. Es bedeutet auch, dass Playbooks, die auf hosts: localhost oder lokale Verbindungstypen funktionieren am besten für die von Level verteilte Automatisierung.
ℹ️ HINWEIS: Playbooks, die über SSH auf Remote-Hosts abzielen, funktionieren weiterhin – das Gerät fungiert als Ansible-Steuerknoten für diese Remote-Verbindungen. Dies ist nützlich in Fällen, in denen ein verwaltetes Gerät andere Geräte in seinem lokalen Netzwerk erreichen muss.
Ein Level-Skript für Ansible erstellen
Das Level-Skript ist ein Shell-Wrapper, der ansible-playbook. Die Playbook-Datei selbst wird separat angehängt und zur Laufzeit auf das Gerät heruntergeladen.
Für Linux und macOS
1. Gehen Sie zu Automations → Scripts und klicken Sie auf + New script.
2. Setzen Sie den Interpreter auf Shell (Bash).
3. Fügen Sie den Playbook-Aufruf hinzu:
Bash
#!/bin/bash
ansible-playbook /path/to/playbook.yml
if [ $? -ne 0 ]; then
echo "Playbook failed on $(hostname)" >&2
exit 1
fi
4. Hängen Sie die Playbook-Datei an das Skript an oder laden Sie sie in Automations → Files und verwenden Sie eine Download File Aktion, um es vor der Skriptausführung auf das Gerät zu legen.
💡 TIPP: Verwenden Sie ansible-playbook --check während der Entwicklung, um einen Trockenlauf durchzuführen, der Syntax und Konnektivität validiert, ohne Änderungen vorzunehmen.
Für Windows (über WSL)
Setzen Sie den Interpreter auf PowerShell.
Ansible über WSL aufrufen:
PowerShell
wsl ansible-playbook /mnt/c/LevelPlaybooks/network_test.yml
WSL muss bereits auf dem Gerät installiert und konfiguriert sein. Siehe Ansible auf Windows einrichten unten.
Für Windows (über Cygwin oder Git Bash)
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /cygdrive/c/LevelPlaybooks/playbook.yml"
Ansible auf Windows-Endpunkten einrichten
Da jedes Gerät das Playbook lokal ausführt, benötigen Windows-Endpunkte eine POSIX-kompatible Shell mit installiertem Python und Ansible. Zwei Optionen:
Option A: Windows-Subsystem für Linux (WSL)
1. Führen Sie in PowerShell als Administrator folgenden Befehl aus:
PowerShell
wsl --install
Starten Sie das System neu, wenn Sie dazu aufgefordert werden.
2. Aus der Ubuntu-Shell, die nach dem Neustart geöffnet wird:
Bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip
pip3 install ansible
3. Überprüfen:
Bash
ansible --version
ansible-playbook --version
4. Rufen Sie in Level-Skripten Ansible über wsl ansible-playbook ... aus PowerShell.
Option B: Cygwin oder Git Bash
1. Installieren Sie Cygwin oder Git für Windows und wählen Sie dabei Python 3, pip und OpenSSH während der Einrichtung aus.
2. Aus der Cygwin- oder Git Bash-Shell:
Bash
pip3 install ansible
3. Rufen Sie in Level-Skripten Ansible auf, indem Sie die Bash-Executable direkt aufrufen:
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /path/to/playbook.yml"
⚠️ WARNUNG: Gleichen Sie Python- und Ansible-Versionen auf allen Windows-Endpunkten ab. Versionsunterschiede zwischen Endpunkten verursachen inkonsistentes Verhalten, das schwer zu diagnostizieren ist.
Playbook-Konfiguration für die lokale Ausführung
Wenn Playbooks lokal auf jedem Gerät statt von einem zentralen Steuerknoten ausgeführt werden, helfen einige Konfigurationsanpassungen:
Verwenden Sie hosts: localhost with connection: local für Aufgaben, die auf dem Gerät selbst ausgeführt werden sollen:
YAML
- name: Local configuration
hosts: localhost
connection: local
tasks:
- name: Check connectivity
ansible.builtin.ping:
Verbose-Flags hinzufügen in der Entwicklung, um detaillierte Ausgaben in der Level-Konsole zu erhalten:
Bash
ansible-playbook /path/to/playbook.yml -vv
Level streamt alle stdout/stderr-Ausgaben, sodass der verbose Modus aufgabenweise Details inline anzeigt.
Best Practices
Lokal validieren, bevor Sie über Level bereitstellen. Führen Sie
ansible-playbook playbook.yml --checkauf einem Testgerät zuerst. Syntaxfehler im Playbook werden sofort angezeigt, anstatt mitten in einem Produktionslauf.Bei Fehler mit Nicht-Null-Code beenden. Level markiert einen Skriptlauf nur dann als fehlgeschlagen, wenn das Skript mit einem Nicht-Null-Code beendet wird. Die
if [ $? -ne 0 ]Die Prüfung im obigen Wrapper erledigt dies automatisch. Ohne sie kann ein fehlgeschlagenes Playbook in der Ausführungshistorie von Level wie ein Erfolg aussehen.Playbooks idempotent halten. Ansible-Playbooks sollten dasselbe Ergebnis liefern, egal ob sie einmal oder zehnmal ausgeführt werden. Dadurch können sie über Level erneut ausgeführt werden, ohne unbeabsichtigte Nebeneffekte.
Level's Datei-Repository für Playbooks verwenden. Playbook-
.ymlDateien nach Automations → Files, und verwenden Sie dann eine Download File Aktion vor dem Skriptschritt, um sie auf jedem Gerät zu platzieren. So bleiben Ihre Playbooks in Level versioniert und sichergestellt, dass jedes Gerät die aktuelle Version erhält.
FAQ
Muss Ansible auf jedem verwalteten Gerät installiert sein oder reicht ein zentraler Server? Jedes Gerät, auf dem Sie ein Playbook ausführen möchten, muss Ansible lokal installiert haben. Level führt keine SSH-Verbindung von einem zentralen Steuerknoten durch – es verteilt das Playbook und führt es auf jedem Gerät unabhängig aus.
Kann das Playbook andere Hosts über SSH vom verwalteten Gerät aus ansprechen? Ja. Das verwaltete Gerät fungiert als Ansible-Steuerknoten für alle im Playbook definierten Remote-Verbindungen. SSH-Schlüssel und Anmeldedaten müssen auf dem verwalteten Gerät selbst vorhanden sein.
Mein Playbook läuft lokal problemlos, schlägt aber in Level fehl. Was sollte ich zuerst prüfen? Überprüfen Sie den Benutzerkontext. Level führt Skripte als
rootunter Linux/macOS und alsSYSTEMunter Windows. Wenn das Playbook von einem Benutzer-Heimverzeichnis, PATH oder einer Umgebungsvariable abhängt, die nur für einen bestimmten Benutzer gesetzt ist, werden diese Ressourcen nicht gefunden. Verwenden Sie absolute Pfade und eine explizite Umgebungseinrichtung im Playbook.Wie übergebe ich zur Laufzeit Variablen an das Playbook? Verwenden Sie das
--extra-varsFlag imansible-playbookAufruf. Die Systemvariablen und Automatisierungsvariablen von Level können über das{x}Auswahlfeld im Skripteditor. Zum Beispiel:
ansible-playbook /path/to/playbook.yml --extra-vars "hostname={{level_device_name}}"Kann ich das Playbook auf wiederkehrender Basis planen? Ja. Hängen Sie das Skript an eine Automatisierung mit einem geplanten Trigger an. Legen Sie den Zeitplan fest, fügen Sie eine Download File-Aktion für das Playbook hinzu, wenn es im Datei-Repository von Level gespeichert ist, und fügen Sie dann die Skript-ausführen-Aktion hinzu. Die Automatisierung führt das Playbook auf jedem Gerät aus, das den Triggerbedingungen entspricht.
