Ausführen von Remote-Shell-Befehlen
Ausführen von Ad-hoc-Befehlen
Ansible ermöglicht es Ihnen, Ad-hoc-Befehle auf Remote-Hosts auszuführen, ohne ein Playbook erstellen zu müssen. Dies ist nützlich für schnelle, einmalige Aufgaben oder zu Testzwecken. Um einen Ad-hoc-Befehl auszuführen, können Sie das ansible
-Kommandozeilenwerkzeug mit folgender Syntax verwenden:
ansible <Hostmuster> -m <Modul> -a "<Modulargumente>"
Um beispielsweise den Befehl uptime
auf allen Hosts in der Gruppe webservers
auszuführen, können Sie folgenden Befehl verwenden:
ansible webservers -m command -a "uptime"
Verwendung des Moduls command
Das Modul command
ist eines der am häufigsten verwendeten Module zum Ausführen von Remote-Shell-Befehlen in Ansible. Es ermöglicht Ihnen, beliebige Befehle auf den Zielhosts auszuführen. Hier ist ein Beispiel-Playbook, das das Modul command
verwendet:
- hosts: webservers
tasks:
- name: Ausführen eines einfachen Befehls
command: echo "Hallo, LabEx!"
register: command_output
- name: Ausgabe des Befehls anzeigen
debug:
var: command_output.stdout
In diesem Beispiel wird das Modul command
verwendet, um den Befehl echo "Hallo, LabEx!"
auf der Gruppe webservers
auszuführen. Die Ausgabe des Befehls wird in der Variablen command_output
gespeichert und anschließend mit dem Modul debug
angezeigt.
Umgang mit Befehlsfehlern
Standardmäßig unterbricht Ansible die Aufgabe, wenn der Remote-Befehl einen Rückgabewert ungleich Null zurückgibt. Sie können Befehlsfehler behandeln, indem Sie die Option ignore_errors
verwenden oder die Variable rc
(Rückgabecode) in Ihrem Playbook überprüfen. Hier ist ein Beispiel:
- hosts: webservers
tasks:
- name: Ausführen eines Befehls, der möglicherweise fehlschlägt
command: /path/to/command_that_might_fail
register: command_result
ignore_errors: yes
- name: Ergebnis des Befehls prüfen
debug:
msg: "Befehl fehlgeschlagen mit Rückgabewert {{ command_result.rc }}"
when: command_result.rc != 0
In diesem Beispiel wird die Option ignore_errors
verwendet, um zu verhindern, dass die Aufgabe fehlschlägt, wenn der Remote-Befehl einen Rückgabewert ungleich Null zurückgibt. Die Variable rc
wird dann geprüft, um den Rückgabewert des Befehls zu ermitteln, und eine Debugmeldung wird angezeigt, falls der Befehl fehlgeschlagen ist.