Einführung
Willkommen im Ansible Local Action Module Lab! In diesem Lab werden Sie die Verwendung des Ansible Local Action Moduls erkunden. Das Local Action Modul ermöglicht es Ihnen, Aufgaben auf dem Steuerungssystem auszuführen, auf dem Ansible ausgeführt wird. Dies ist nützlich, wenn Sie lokale Operationen ausführen müssen, wie z. B. die Ausführung von Shell-Befehlen oder Skripts.
Lassen Sie uns beginnen!
Lokalen Ausführung eines einfachen Befehls
In diesem Schritt lernen Sie, wie Sie das Ansible Local Action Modul verwenden, um einen einfachen Befehl auf dem Steuerungssystem auszuführen. Dies wird Ihnen helfen, die grundlegende Verwendung und Syntax des Moduls zu verstehen.
Führen Sie zunächst die Datei /home/labex/project/execute_local_command.yml aus.
Fügen Sie den folgenden Inhalt zur Playbook-Datei hinzu:
- name: Lokales Ausführen eines einfachen Befehls
gather_facts: false
hosts: localhost
tasks:
- name: Lokalen Ausdruck einer Nachricht
local_action:
module: command
cmd: echo "Hello, World!"
register: result
- name: Debuggen der Ausgabe
debug:
var: result.stdout
gather_facts: Dies bestimmt, ob Ansible Fakten über die Zielhosts sammeln soll. In diesem Fall ist es auffalsegesetzt, was bedeutet, dass keine Fakten gesammelt werden.hosts: Dies bestimmt den Zielhost, auf dem das Playbook ausgeführt werden soll. In diesem Fall wird das Playbook auf dem lokalen Host ausgeführt, da der Zielhostlocalhostist.tasks: Dies ist eine Liste von Aufgaben, die ausgeführt werden sollen.local_action: Dies zeigt an, dass die Aktion lokal auf dem Steuerungssystem ausgeführt werden soll, auf dem Ansible ausgeführt wird.module: Dies bestimmt das Ansible-Modul, das für die Aktion verwendet werden soll. In diesem Fall ist es dascommand-Modul.cmd: Dies ist der tatsächliche Befehl, der ausgeführt werden soll. In diesem Fall ist es der Shell-Befehlecho "Hello, World!", der die Nachricht "Hello, World!" auf der Konsole ausdrucken wird.register: Dies registriert die Ausgabe des Befehls in der Variablenresultfür spätere Verwendung im Playbook.debug: Dies ist das Ansible-Modul, das verwendet wird, um Debuginformationen auszugeben.var: Dies ist ein Parameter für dasdebug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist esresult.stdout, das die Standardausgabe des im vorherigen Task ausgeführten Befehls enthält.
Zusammenfassend führt dieses Playbook einen einfachen Befehl echo "Hello, World!" lokal auf dem Steuerungssystem aus, registriert die Ausgabe und gibt dann die Ausgabe mit dem debug-Modul aus.
Geben Sie dann die Ausgabe des Befehls im Ansible Playbook aus.
ansible-playbook /home/labex/project/execute_local_command.yml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [Local Action Module Challenge] *******************************************
TASK [Lokalen Ausdruck einer Nachricht] *************************************************
changed: [localhost]
TASK [Debuggen der Ausgabe] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, World!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Hier ist "result.stdout": "Hello, World!" die Ausgabe des Befehls echo "Hello, World!".
Ausführen eines Befehls mit Variablenersetzung
In diesem Schritt werden Sie Ihr Verständnis des Local Action Moduls durch die Einbeziehung von Variablenersetzung erweitern. Dies wird es Ihnen ermöglichen, den ausgeführten Befehl dynamisch basierend auf Variablen in Ihrem Playbook zu ändern.
Führen Sie zunächst die Datei /home/labex/project/execute_command_with_variable_substitution.yml aus.
Fügen Sie den folgenden Inhalt zur Playbook-Datei hinzu:
- name: Ausführen eines Befehls mit Variablenersetzung
gather_facts: false
hosts: localhost
vars:
message: "Hello, Ansible!"
tasks:
- name: Ausdrucken einer Nachricht mit Variablenersetzung
local_action:
module: command
cmd: echo "{{ message }}"
register: result
- name: Debuggen der Ausgabe
debug:
var: result.stdout
vars: Dieser Abschnitt wird verwendet, um Variablen zu definieren. In diesem Playbook definiert es eine Variable namensmessagemit dem Wert"Hello, Ansible!".local_action: Dies zeigt an, dass die Aktion lokal auf dem Steuerungssystem ausgeführt werden soll, auf dem Ansible ausgeführt wird.module: Dies bestimmt das Ansible-Modul, das für die Aktion verwendet werden soll. In diesem Fall ist es dascommand-Modul.cmd: Dies ist der tatsächliche Befehl, der ausgeführt werden soll. In diesem Fall ist es der Shell-Befehlecho "{{ message }}", wobei{{ message }}durch den Wert der zuvor definiertenmessage-Variable ersetzt wird.register: Dies registriert die Ausgabe des Befehls in der Variablenresultfür spätere Verwendung im Playbook.debug: Dies ist das Ansible-Modul, das verwendet wird, um Debuginformationen auszugeben.var: Dies ist ein Parameter für dasdebug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist esresult.stdout, das die Standardausgabe des im vorherigen Task ausgeführten Befehls enthält.
Zusammenfassend führt dieses Playbook den Befehl echo "{{ message }}" lokal auf dem Steuerungssystem aus, wobei {{ message }} durch den Wert der in der vars-Sektion definierten message-Variable ersetzt wird. Es registriert die Ausgabe des Befehls und gibt dann die Ausgabe mit dem debug-Modul aus.
Geben Sie dann die Ausgabe des Befehls im Ansible Playbook aus.
ansible-playbook /home/labex/project/execute_command_with_variable_substitution.yml
Beispielausgabe:
[WARNING]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNING]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [Local Action Module Challenge] *******************************************
TASK [Ausdrucken einer Nachricht mit Variablenersetzung] ******************************
changed: [localhost]
TASK [Debuggen der Ausgabe] ********************************************************
ok: [localhost] => {
"result.stdout": "Hello, Ansible!"
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Hier ist "result.stdout": "Hello, Ansible!" die Ausgabe des Befehls echo "{{ message }}".
Ausführen einer komplexen lokalen Aktion
In diesem Schritt werden Sie eine komplexere Verwendung des Ansible Local Action Moduls erkunden. Sie werden ein Shell-Skript lokal ausführen und Argumente an das Skript übergeben.
Führen Sie zunächst die Datei /home/labex/project/execute_complex_local_action.yml aus.
Fügen Sie den folgenden Inhalt zur Playbook-Datei hinzu:
- name: Ausführen einer komplexen lokalen Aktion
gather_facts: false
hosts: localhost
tasks:
- name: Ausführen eines Shell-Skripts mit Argumenten
local_action:
module: shell
cmd:./script.sh 5 7
register: result
- name: Debuggen der Ausgabe
debug:
var: result.stdout
local_action: Dies zeigt an, dass die Aktion lokal auf dem Steuerungssystem ausgeführt werden soll, auf dem Ansible ausgeführt wird.module: Dies bestimmt das Ansible-Modul, das für die Aktion verwendet werden soll. In diesem Fall ist es dasshell-Modul.cmd: Dies ist der tatsächliche Shell-Befehl, der ausgeführt werden soll. In diesem Fall ist es./script.sh 5 7, der ein Shell-Skript namensscript.shmit den Argumenten5und7ausführt.register: Dies registriert die Ausgabe des Befehls in der Variablenresultfür spätere Verwendung im Playbook.debug: Dies ist das Ansible-Modul, das verwendet wird, um Debuginformationen auszugeben.var: Dies ist ein Parameter für dasdebug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist esresult.stdout, das die Standardausgabe des im vorherigen Task ausgeführten Befehls enthält.
Zusammenfassend führt dieses Playbook ein Shell-Skript script.sh mit den Argumenten 5 und 7 lokal auf dem Steuerungssystem aus. Es registriert die Ausgabe des Skripts und gibt dann die Ausgabe mit dem debug-Modul aus.
Tipps: Wir haben Ihnen dieses Shell-Skript vorbereitet. Es befindet sich im Verzeichnis
/home/labex/project/und heißtscript.sh. Die Funktion dieses Skripts ist es, die Summe von zwei Parametern zu berechnen.
Geben Sie dann die Ausgabe des Befehls im Ansible Playbook aus.
ansible-playbook /home/labex/project/execute_complex_local_action.yml
Beispielausgabe:
[WARNUNG]: Es wurde kein Inventar analysiert, es ist nur der implizite localhost verfügbar
[WARNUNG]: Die bereitgestellte Hosts-Liste ist leer, es ist nur localhost verfügbar. Beachten Sie, dass der implizite localhost nicht mit 'all' übereinstimmt
PLAY [Local Action Module Challenge] *******************************************
TASK [Ausführen eines Shell-Skripts mit Argumenten] ***********************************
changed: [localhost]
TASK [Debuggen der Ausgabe] ********************************************************
ok: [localhost] => {
"result.stdout": "Die Summe von 5 und 7 ist 12."
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Hier ist "result.stdout": "Die Summe von 5 und 7 ist 12." die Ausgabe des Skripts ./script.sh 5 7.
Zusammenfassung
Herzlichen Glückwunsch zum Abschluss des Ansible Local Action Module Labs! In diesem Lab haben Sie gelernt, wie Sie das Ansible Local Action Modul verwenden, um Befehle und Skripts lokal auszuführen. Beginnend mit der einfachen Befehlsausführung, sind Sie zu Variablenersetzungen und der Ausführung komplexer Shell-Skripts mit Argumenten vorgeschritten.
Durch die Fertigstellung dieses Labs haben Sie wertvolle Erfahrungen bei der Nutzung des Local Action Moduls für Aufgaben gewonnen, die auf dem Steuerungssystem ausgeführt werden müssen. Entdecken Sie weiterhin Ansible und seine Module, um Ihre Automatisierungsfähigkeiten weiter zu verbessern.
Viel Spaß beim Automatisieren!


