Ansible Local_Action

Ansible Local_Action
In den meisten Situationen verwenden wir Ansible, um Remote -Hosts aus einem einzigen Steuerknoten zu verwalten und zu konfigurieren. Bei der Erstellung von Playbooks ist es mit dem Verständnis, dass sie auf den Remote -Maschinen ausführen sollen, die wir im Block des Hosts der Playbooks spezifizieren.

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: localhost

Das 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:

---
- Hosts: Alles
sammle_facts: nein
wahr werden
Aufgaben:
- Name: Archivethelocallogfiles
local_action:
Modul: Community.allgemein.Archiv
Pfad: /var /log
dest:/var/log/log.Teer.gz
Format: GZ
Force_Archive: Richtig
- Name: Copylogarchivetoremotehost
Ansible.gebaut.Kopieren:
src:/var/log/log/log.Teer.gz
dest: /home /ubuntu

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.allgemein

Die 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.YML

Nach 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.

---
- Hosts: Alles
sammle_facts: nein
wahr werden
Aufgaben:
- Name: CountFilesandDirectoriesOnthe Remotehost
Shell: ls-la ~ | WC -l
Register: Remote_files
- Name: Printremotefiles
debuggen:
msg: 'remote_files.stdout '
- Name: countFilesandDirectoresOnthe Localmachine
local_action: Shellls-La ~ | WC -l
Register: Local_files
- Name: printlocalfiles
debuggen:
msg: 'local_files.stdout '

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.YML

Local_action mit run_once

Sie können das Local_Action -Modul neben dem Parameter run_once verwenden.

---
- Hosts: Alles
sammle_facts: nein
wahr werden
Aufgaben:
- Name: StoptheapacheServer
local_action:
Modul: Ansible.gebaut.Service
Name: httpd
Staat: gestoppt
run_once: true

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.