Ansible Local Action Modul

AnsibleAnsibleBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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!

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 100% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Lokales Ausführen 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 auf false gesetzt, 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 Zielhost localhost ist.
  • 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 das command-Modul.
  • cmd: Dies ist der tatsächliche Befehl, der ausgeführt werden soll. In diesem Fall ist es der Shell-Befehl echo "Hello, World!", der die Nachricht "Hello, World!" auf der Konsole ausdrucken wird.
  • register: Dies registriert die Ausgabe des Befehls in der Variablen result fü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 das debug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist es result.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 namens message mit 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 das command-Modul.
  • cmd: Dies ist der tatsächliche Befehl, der ausgeführt werden soll. In diesem Fall ist es der Shell-Befehl echo "{{ message }}", wobei {{ message }} durch den Wert der zuvor definierten message-Variable ersetzt wird.
  • register: Dies registriert die Ausgabe des Befehls in der Variablen result fü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 das debug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist es result.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 das shell-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 namens script.sh mit den Argumenten 5 und 7 ausführt.
  • register: Dies registriert die Ausgabe des Befehls in der Variablen result fü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 das debug-Modul, der angibt, welche Variable debuggt werden soll. In diesem Fall ist es result.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ßt script.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!