Level kann Ansible-Playbooks auf verwalteten Geräten über seine Scripting-Engine ausführen. Der Hauptunterschied zu einem typischen Ansible-Setup: Level verwendet keinen zentralen Steuerknoten. Jedes Gerät lädt das Playbook herunter und führt es lokal aus, und Level streamt die Ausgabe in Echtzeit zu Ihrer Konsole.
Dieses Handbuch behandelt das Ausführungsmodell, wie Sie ein Level-Skript erstellen, das ansible-playbook aufruft, und wie Sie Windows-Endpunkte vorbereiten, die eine POSIX-kompatible Umgebung benötigen, um Ansible auszuführen.
⚙️ 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 SSH in Ziel-Hosts zu verwenden und Aufgaben remote auszuführen. Das Modell von Level unterscheidet sich: Jedes Gerät führt das Playbook lokal auf sich selbst aus.
Wenn ein Level-Skript mit einem ansible-playbook-Befehl auf einem Gerät ausgeführt wird:
Das Skript (und alle zugehörigen Playbook-Dateien) werden auf das Gerät heruntergeladen.
Das Gerät führt
ansible-playbooklokal mit seiner eigenen Ansible-Installation aus.Der Level-Agent erfasst stdout/stderr und streamt es in Echtzeit zur Level-Konsole, während das Playbook läuft.
Das bedeutet, dass jedes Gerät Ansible installiert haben muss, nicht nur ein zentrales System. Es bedeutet auch, dass Playbooks mit hosts: localhost oder lokalen Verbindungstypen am besten für die verteilte Automatisierung von Level geeignet sind.
ℹ️ HINWEIS: Playbooks, die Remote-Hosts über SSH ausrichten, funktionieren trotzdem — das Gerät fungiert als Ansible-Steuerknoten für diese Remote-Verbindungen. Dies ist nützlich, wenn ein verwaltetes Gerät andere auf seinem lokalen Netzwerk erreichen muss.
Erstellen eines Level-Skripts für Ansible
Das Level-Skript ist ein Shell-Wrapper, der ansible-playbook aufruft. Die Playbook-Datei selbst wird separat beigefügt 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. Stellen Sie den Interpreter auf Shell (Bash) ein.
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. Fügen Sie die Playbook-Datei an das Skript an oder laden Sie sie auf Automations → Files hochund verwenden Sie eine Download File-Aktion, um sie vor der Skriptausführung auf das Gerät zu platzieren.
💡 TIPP: Verwenden Sie ansible-playbook --check während der Entwicklung, um einen Probelauf durchzuführen, der Syntax und Konnektivität validiert, ohne Änderungen vorzunehmen.
Für Windows (über WSL)
Stellen Sie den Interpreter auf PowerShell ein.
Rufen Sie Ansible über WSL auf:
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
Weil jedes Gerät das Playbook lokal ausführt, benötigen Windows-Endpunkte eine POSIX-kompatible Shell mit Python und Ansible installiert. Zwei Möglichkeiten:
Option A: Windows Subsystem für Linux (WSL)
1. Führen Sie in PowerShell als Administrator aus:
PowerShell
wsl --install
Starten Sie neu, wenn Sie dazu aufgefordert werden.
2. Aus der Ubuntu-Shell, die sich nach dem Neustart öffnet:
Bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3 python3-pip
pip3 install ansible
3. Überprüfen Sie:
Bash
ansible --version
ansible-playbook --version
4. In Level-Skripten rufen Sie Ansible über wsl ansible-playbook ... aus PowerShell auf.
Option B: Cygwin oder Git Bash
1. Installieren Sie Cygwin oder Git for Windows und wählen Sie Python 3, pip und OpenSSH während der Einrichtung aus.
2. Aus der Cygwin oder Git Bash-Shell:
Bash
pip3 install ansible
3. In Level-Skripten rufen Sie Ansible durch direktes Aufrufen der Bash-Exe auf:
PowerShell
C:\cygwin64\bin\bash.exe -lc "ansible-playbook /path/to/playbook.yml"
⚠️ WARNUNG: Stimmen Sie die Python- und Ansible-Versionen auf allen Windows-Endpunkten ab. Versionsabweichungen zwischen Endpunkten führen zu inkonsistentem Verhalten, das schwer zu diagnostizieren ist.
Playbook-Konfiguration Für Lokale Ausführung
Wenn Playbooks lokal auf jedem Gerät ausgeführt werden, anstatt von einem zentralen Steuerknoten, helfen einige Konfigurationsanpassungen:
Verwenden Sie hosts: localhost mit 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:
Fügen Sie während der Entwicklung ausführliche Flags hinzu, um detaillierte Ausgaben in der Level-Konsole zu erhalten:
Bash
ansible-playbook /path/to/playbook.yml -vv
Level streamt alle stdout/stderr-Ausgaben, daher zeigt der ausführliche Modus Task-für-Task-Details inline an.
Best Practices
Validieren Sie lokal, bevor Sie über Level bereitstellen. Führen Sie
ansible-playbook playbook.yml --checkzuerst auf einem Test-Gerät aus. Syntaxfehler im Playbook erscheinen sofort, anstatt in der Mitte eines Produktionslaufs.Beenden Sie mit einem Nicht-Null-Code bei Fehlern. Level markiert eine Skriptausführung als fehlgeschlagen nur, wenn das Skript mit einem Nicht-Null-Code beendet wird. Die
if [ $? -ne 0 ]-Überprüfung oben tut dies automatisch. Ohne sie kann ein fehlgeschlagenes Playbook in der Ausführungshistorie von Level wie ein Erfolg aussehen.Halten Sie Playbooks idempotent. Ansible-Playbooks sollten das gleiche Ergebnis liefern, ob sie einmal oder zehnmal ausgeführt werden. Dies macht sie sicher, um über Level erneut auszuführen, ohne unbeabsichtigte Nebenwirkungen.
Verwenden Sie Levels Datei-Repository für Playbooks. Laden Sie Playbook-Dateien
.ymlauf Automations → Files hochund verwenden Sie dann eine Download File-Aktion vor dem Skriptschritt, um sie auf jedem Gerät zu platzieren. Dies hält Ihre Playbooks in Level versionskontrolliert und stellt sicher, dass jedes Gerät die aktuelle Version erhält.
FAQ
Benötige ich Ansible auf jedem verwalteten Gerät oder nur auf einem zentralen Server? Jedes Gerät, auf dem Sie ein Playbook ausführen möchten, muss Ansible lokal installiert haben. Level SSH nicht von einem zentralen Steuerknoten — es verteilt und führt das Playbook auf jedem Gerät unabhängig aus.
Kann das Playbook vom verwalteten Gerät aus andere Hosts über SSH ausrichten? Ja. Das verwaltete Gerät fungiert als Ansible-Steuerknoten für alle im Playbook definierten Remote-Verbindungen. SSH-Schlüssel und Anmeldeinformationen müssen auf dem verwalteten Gerät selbst vorhanden sein.
Mein Playbook läuft lokal einwandfrei, schlägt aber in Level fehl. Was sollte ich zuerst überprüfen? Überprüfen Sie den Benutzerkontext. Level führt Skripte als
rootauf Linux/macOS und alsSYSTEMauf Windows aus. Wenn das Playbook von einem Benutzer-Heimatverzeichnis, PATH oder einer Umgebungsvariable abhängt, die nur für einen bestimmten Benutzer festgelegt ist, findet es diese Ressourcen nicht. Verwenden Sie absolute Pfade und explizite Umgebungseinrichtung im Playbook.Wie kann ich Variablen zur Laufzeit in das Playbook übergeben? Verwenden Sie das Flag
--extra-varsimansible-playbook-Aufruf. Levels Systemvariablen und Automatisierungsvariablen können mit dem Selektor{x}im Skript-Editor übergeben werden. Zum Beispiel:
ansible-playbook /path/to/playbook.yml --extra-vars "hostname=##{{level_device_name}}"Kann ich das Playbook regelmäßig planen? Ja. Fügen Sie das Skript zu einer Automatisierung mit einem zeitgesteuerten Trigger hinzu. Stellen Sie den Zeitplan ein, 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 Run Script-Aktion hinzu. Die Automatisierung führt das Playbook auf jedem Gerät aus, das den Trigger-Bedingungen entspricht.
