Es gibt jedoch Fälle, in denen Sie möglicherweise eine bestimmte Aktion auf der lokalen Maschine anstelle von Remote -Hosts ausführen müssen. In solchen Fällen eine Funktion wie LOCAL_ACTION kommt nützlich.
Diese Anleitung zeigt Ihnen, wie Sie mit dem Ansible Local_Action -Modul arbeiten, um Aufgaben lokal auszuführen.
Wie das Modul des Ansible Local_Action funktioniert
Wie bereits erwähnt, handelt es sich beim Erstellen von Playbooks in der Regel Remote -Hosts. Wenn Sie eine Aufgabe an andere Hosts als die Remote -Hosts ausführen müssen, können Sie Ansible -Module wie Local_Action und Delegate_to verwenden.
Delegate_to ist nützlich, wenn Sie eine Aufgabe festlegen müssen, um sie auf einem bestimmten Host auszuführen. Sie richten das Modul delegate_to auf die Zielhosts, indem Sie entweder den Hostnamen oder die IP -Adresse angeben.
Local_Action hingegen wird die festgelegten Aufgaben nur auf der lokalen Maschine ausführen. Es ähnelt der Festlegung des Wertes von delegate_to auf localhost oder 127.0.0.1
delegate_to: localhostDas Local_Action -Modul ist bequem, wenn Sie zum ersten Mal eine Aufgabe auf dem lokalen Computer ausführen müssen, bevor Sie sie an Remote -Systeme senden. Dies sind hauptsächlich benutzerdefinierte oder Shell -Befehle innerhalb des lokalen Systems.
Der beste Weg, um zu verstehen, wie Sie das Local_Action -Modul verwenden.
Ansible Local_Action Beispiel Anwendungsfälle
Der Einfachheit halber werden wir versuchen, die Playbooks kurz und nicht zu komplex zu halten.
Bevor wir uns auf die Spielbücher konzentrieren, beschreiben wir unser Ansible -Setup, mit dem wir verstehen können, wie das Local_Action -Modul funktioniert.
In unserem Beispiel -Setup haben wir einen Ubuntu 20.04 Server, der Ansible installiert hat. Dies dient als Ansible -Steuerknoten.
Als nächstes haben wir drei Fernmaschinen: ein Ubuntu 21.04 Server, ein Debian 11 -Server und ein CentOS 8 -Server.
Wir haben die Ansible -Inventardatei, die alle IP -Adressen der drei Hosts im Steuerknoten enthält.
Sobald wir ein Spielbuch ausgeführt haben, wird alle drei Hosts ausgeführt.
NOTIZ: Wir werden die Ausgabe auf einen einzelnen Host beschränken, um Komplexität und Verwirrung zu vermeiden.
Lokal_Action mit einem Modul
Betrachten Sie das folgende Spielbuch:
---Im ersten Block geben wir die Zielhosts an, um die Aufgaben auszuführen, sofern nicht anders angegeben.
Das Spielbuch deaktiviert weiterhin Fakten über die Remote-Hosts, indem es den Block CameD_FACTs auf nein festlegt.
Um die Erlaubnis zu lesen und zu schreiben, setzen wir den Block auf wahr.
In den nachfolgenden Blöcken definieren wir zwei Aufgaben:
Die erste Aufgabe erstellt ein Archiv der Protokolldateien aus dem lokalen System. Wir delegieren die Aufgabe, die im lokalen System mit dem Local_actiob -Block auszuführen ist. In unserem Beispiel verwenden wir ein Community -Modul, das wir mit dem Befehl installieren können:
Ansible-Galaxy Collection Installation Community.allgemeinDie nächste Aufgabe kopiert das Protokollarchiv vom lokalen System in den angegebenen Pfad auf dem Remote -Host.
Speichern Sie das Spielbuch und führen Sie es mit dem Befehl aus:
Ansible-Playbook local_action.YMLNach erfolgreicher Fertigstellung sollten Sie eine Ausgabe sehen, die der unten gezeigten ähnlich ist:
Lokal_Action mit einem Shell -Befehl
Das folgende Beispiel zeigt, wie Sie die Befehle von Shell mithilfe des Local_Action -Moduls ausführen.
---Im Beispiel für Playbook oben verwenden wir das Local_Action -Modul, um einen Shell -Befehl auszuführen. Der Befehl Shell zählt die Anzahl der in einer Variablen gespeicherten Dateien und Verzeichnisse.
Wir verwenden dann das Debug -Modul, um die Anzahl der Dateien sowohl im Remote als auch im Localhost zu drucken.
Führen Sie die Datei als:
Ansible-Playbook FileCount.YMLLocal_action mit run_once
Sie können das Local_Action -Modul neben dem Parameter run_once verwenden.
---Das obige Spielbuch wird den Local_Action -Block einmal auf dem lokalen System ausführen.
Abschluss
Das Local_Action -Modul ist nützlich, wenn Sie eine Aufgabe delegieren möchten, die auf der lokalen Maschine ausgeführt werden soll. Sie können es sowohl mit einem Ansible -Modul als auch mit einem Shell -Befehl verwenden.