Was ist der Unterschied zwischen Shell und Befehl in Ansible?

Was ist der Unterschied zwischen Shell und Befehl in Ansible?

Im Ansible -Kern gibt es für fast alle Arten von Anwendungsfällen verschiedene Ansible -Module enthalten. Module werden auch als "Bibliotheks- oder Task -Plugins" bezeichnet, diskrete Codeeinheiten, die in der Playbook -Aufgabe verwendet werden, oder in der Befehlszeile. Jedes Ansible -Modul führt normalerweise auf dem Remote -Zielknoten aus und sammelt die Rückgabeausgabe. Die beiden am häufigsten verwendeten Ansible -Module sind Shell und Befehl.

Das Shell-Modul in Ansible wird verwendet, um alle Shell-Befehle mit den auf Ziel-Unix-basierten Hosts auszuführen. Das Shell -Modul führt Befehle in Knoten oder Shell -Skripten aus. Ein weiteres dediziertes Ansible -Modul ist ein Skript. Im Befehlsmodul wird der angegebene Befehl auf allen ausgewählten Knoten ausgeführt. Der ausgeführte Befehl wird nicht über die Shell verarbeitet.

Ansible -Module sind fast ähnlich und führen bei der ersten Ansicht die gleichen Aufgaben aus, aber es gibt einige entscheidende Unterschiede zwischen diesen Modulen. Hier erwähnen wir in diesem Artikel einige Hauptunterschiede zwischen der Shell- und den Befehlsmodulen in Ansible.

Unterschiedlich zwischen Shell vs. Befehlsmodul in Ansible

In den meisten Anwendungsfällen führen sowohl Shell- als auch Befehlsmodule den gleichen Job aus. Es gibt jedoch nur wenige Hauptunterschiede zwischen diesen beiden Modulen.

Unterstützung von Variablen und Operationen

Während der Verwendung des Befehlsmoduls werden die Befehle nicht über eine Shell ausgeführt. Folglich sind Variablen wie $ home nicht verfügbar und Operationen wie, | und und wird in diesem Fall nicht funktionieren. Wenn Sie diese Variablen und Vorgänge verwenden möchten, müssen Sie ein Shell -Modul verwenden.

Befehlsausführung

Im Shell -Modul werden Befehle über eine Shell oder standardmäßig im Remote -Knoten '/bin/sh' ausgeführt. Wie wir oben erwähnt haben, wird im Befehlsmodul die Ausführung des Befehls nicht über die Shell verarbeitet. Der Standort kann mit einer ausführbaren Option geändert werden. Rohr- und Umleitungsfunktionen sind daher im Shell -Modul erhältlich.

Sicherheit

Wenn Sie einen Befehl vorhersehbar und sicher ausführen möchten, wird empfohlen, das Befehlsmodul anstelle der Shell zu verwenden. Das Befehlsmodul wird nicht von der Umgebung des Benutzers beeinflusst. Es ist sicherer als das Shell -Modul.

Abschluss

Obwohl beide Module nützlich sind, sollten Sie zunächst überprüfen, ob ein spezifischeres Ansible -Modul für die angegebene Aufgabe verfügbar ist. Es ist die beste Praxis, Module zu verwenden, anstatt den Befehl rohen zu ausführen, da Module alle Standards erfüllen, einschließlich Ausnahmebehandlung. Wenn Sie feststellen, dass kein Modul verfügbar ist, ist es sicherer, die Befehlsmodule zu verwenden, da die Aufgaben nicht über die Benutzerumgebung betroffen sind. Verwenden Sie die Shell -Module, wenn Sie bestimmte variable Funktionen und Vorgänge benötigen.