Einführung
Ansible ist ein leistungsstarkes IT-Automatisierungswerkzeug, das die Verwaltung von Remotesystemen vereinfacht. In diesem Tutorial werden wir den Ansible-Befehlsmodul untersuchen, mit dem Sie Befehle auf Zielhosts ausführen können. Sie lernen die Grundlagen der Befehlsausführung sowie erweiterte Techniken, um Ihre Ansible-Workflows zu verbessern.
Understanding Ansible Command Module
Ansible is a powerful open-source automation tool that allows you to manage and configure your infrastructure across multiple hosts. The Ansible Command module is one of the core modules in Ansible that enables you to execute arbitrary commands on remote hosts.
The Ansible Command module provides a simple and straightforward way to run commands on target hosts. It allows you to execute shell commands, scripts, or any other executable file on the remote system. This module is particularly useful when you need to perform ad-hoc tasks, troubleshoot issues, or execute custom commands on your infrastructure.
To use the Ansible Command module, you need to define the command parameter in your Ansible playbook or ad-hoc command. The command parameter specifies the command you want to execute on the remote host. For example:
- name: Execute a command on remote host
command: uptime
register: uptime_result
become: yes
In this example, the command parameter is set to uptime, which will execute the uptime command on the remote host. The register parameter is used to capture the output of the command, and the become parameter is set to yes to run the command with elevated privileges (if required).
The Ansible Command module also supports various options, such as:
creates: Specifies a file that must exist before running the command.removes: Specifies a file that must not exist before running the command.chdir: Changes the current working directory to the specified path before executing the command.stdin: Passes the specified string to the command via standard input.warn: Controls whether to show a warning if the command could potentially change an important file.
By understanding the Ansible Command module, you can efficiently execute commands on your remote hosts, automate repetitive tasks, and streamline your infrastructure management processes.
Ausführung von Befehlen auf Remote-Hosts
Grundlegende Befehlsausführung
Um einen Befehl auf einem Remote-Host mit dem Ansible Command-Modul auszuführen, können Sie die folgende grundlegende Syntax verwenden:
- name: Ausführung eines Befehls auf einem Remote-Host
command: <Befehl>
register: <Ergebnisvariable>
become: yes
In diesem Beispiel ist <Befehl> der tatsächliche Befehl, den Sie auf dem Remote-Host ausführen möchten, und <Ergebnisvariable> die Variable, die den Ausgang des Befehls speichern wird. Der Parameter become ist auf yes gesetzt, um den Befehl mit erhöhten Rechten auszuführen (falls erforderlich).
Um beispielsweise die Laufzeit eines Remote-Hosts zu überprüfen:
- name: Laufzeit des Remote-Hosts überprüfen
command: uptime
register: uptime_result
become: yes
Der Ausgang des Befehls uptime wird in der Variable uptime_result gespeichert, die Sie dann in Ihrem Playbook oder Ad-hoc-Befehl verwenden können.
Umgang mit Befehlsfehlern
Standardmäßig schlägt das Ansible Command-Modul fehl, wenn der ausgeführte Befehl einen Nicht-Null-Ausgangszustand zurückgibt. Sie können Befehlsfehler behandeln, indem Sie den Parameter ignore_errors verwenden:
- name: Ausführung eines Befehls auf einem Remote-Host
command: <Befehl>
register: <Ergebnisvariable>
ignore_errors: yes
Dies ermöglicht es dem Playbook, die Ausführung fortzusetzen, auch wenn der Befehl fehlschlägt.
Erfassung des Befehlsausgangs
Sie können den Ausgang eines Befehls erfassen, indem Sie den Parameter register verwenden, wie in den vorherigen Beispielen gezeigt. Der Ausgang wird in der angegebenen Variable gespeichert, die Sie dann in Ihrem Playbook oder Ad-hoc-Befehl verwenden können.
Um beispielsweise den Ausgang des Befehls uptime zu erfassen und ihn auszugeben:
- name: Laufzeit des Remote-Hosts überprüfen
command: uptime
register: uptime_result
become: yes
- name: Laufzeit ausgeben
debug:
msg: "{{ uptime_result.stdout }}"
Dies gibt den Ausgang des Befehls uptime auf der Konsole aus.
Durch das Verständnis der Grundlagen der Befehlsausführung auf Remote-Hosts mit dem Ansible Command-Modul können Sie eine Vielzahl von Aufgaben in Ihrer Infrastruktur effektiv automatisieren.
Erweiterte Befehlsausführungstechniken
Bedingte Befehlsausführung
Manchmal möchten Sie einen Befehl nur ausführen, wenn eine bestimmte Bedingung erfüllt ist. Sie können die when-Klausel verwenden, um Befehle in Ihrem Ansible-Playbook bedingungsweise auszuführen:
- name: Befehl ausführen, wenn Bedingung erfüllt ist
command: <Befehl>
when: <Bedingung>
register: <Ergebnisvariable>
become: yes
In diesem Beispiel wird der <Befehl> nur ausgeführt, wenn die <Bedingung> wahr ist.
Um beispielsweise den Befehl free nur auszuführen, wenn der System-Arbeitsspeicher weniger als 20 % frei hat:
- name: Freien Arbeitsspeicher prüfen
command: free -m
register: memory_result
become: yes
- name: Befehl ausführen, wenn freier Arbeitsspeicher unter 20 % liegt
command: <auszuführender_Befehl>
when: (memory_result.stdout_lines[1].split()[3]|int / memory_result.stdout_lines[1].split()[1]|int * 100) < 20
register: <Ergebnisvariable>
become: yes
Schleifen über Befehle
Sie können auch Schleifen verwenden, um mehrere Befehle in einer einzigen Aufgabe auszuführen. Das Ansible Command-Modul unterstützt den Parameter loop hierfür:
- name: Mehrere Befehle ausführen
command: "{{ item }}"
loop:
- <Befehl1>
- <Befehl2>
- <Befehl3>
register: <Ergebnisvariable>
become: yes
In diesem Beispiel werden die angegebenen Befehle (<Befehl1>, <Befehl2> und <Befehl3>) nacheinander ausgeführt, und der Ausgang wird in der <Ergebnisvariable> gespeichert.
Umgang mit Befehlsausführungstimeouts
Standardmäßig wartet Ansible unendlich lange, bis ein Befehl abgeschlossen ist. Sie können jedoch ein Timeout für die Befehlsausführung mit dem Parameter timeout festlegen:
- name: Befehl mit Timeout ausführen
command: <Befehl>
timeout: 60
register: <Ergebnisvariable>
become: yes
In diesem Beispiel wird der Befehl abgebrochen, wenn er länger als 60 Sekunden dauert.
Mit diesen fortgeschrittenen Befehlsausführungstechniken können Sie Ihre Ansible-Automatisierungsfunktionen weiter verbessern und eine Vielzahl von Szenarien im Infrastrukturmanagement bewältigen.
Zusammenfassung
Dieses Ansible-Tutorial bietet eine umfassende Anleitung zur Verwendung des Command-Moduls für die Ausführung von Befehlen auf Remote-Hosts. Durch das Verständnis der Grundlagen und die Erkundung fortgeschrittener Techniken können Sie die Fähigkeiten von Ansible nutzen, um Ihre IT-Operationen zu optimieren und die Effizienz in Ihrer gesamten Infrastruktur zu verbessern.


