Ad -hoc -Befehle sind jedoch nicht wiederverwendbar. Sicher, sie bieten Ihnen eine Möglichkeit, schnell individuelle Aufgaben auszuführen, aber sie können nicht wiederverwendet werden. Eine Analogie könnte gezeichnet werden, wenn der Spielbuchmodus wie ein Shell-Skript ist, während einzelne Befehle Einzellinien sind.
Apropos Shell, Ansible hat auch ein Shell -Modul. Dieses Modul wird verwendet, um Shell -Befehle auf Zielsystemen auszuführen. In diesem Leitfaden werden wir das Ansible -Shell -Modul durchgehen und Beispiele dafür zeigen, wie es verwendet werden kann.
Was ist das Shell -Modul??
Mit dem Ansible Shell -Modul kann der Benutzer komplexe Befehle mit Umleitung, Rohren usw. ausführen. Es nimmt einen Befehlsnamen an, seine Argumente mit White Space -Abgrenzern und führen ihn auf Remote -Hosts aus.
Es mag genau das gleiche klingen wie das Ansible -Befehlsmodul, aber der Unterschied besteht darin, dass die Befehle auf dem Host mit einer Shell ausgeführt werden. Das Shell -Modul hat auch Zugriff auf Umgebungsvariablen und spezielle Operatoren wie | &; usw. Noch besser, Sie können ganze Skripte mit dem Shell -Modul ausführen. Dennoch ist es allgemein bekannt unter Ansible -Benutzern, dass das Befehlsmodul eine sicherere und vorhersehbare Option ist als das Shell -Modul.
Schließlich ist es wichtig zu bedenken, dass dieses Modul nur mit Linux -Systemen funktioniert. Windows -Benutzer können Ansible verwenden.Fenster.win_shell an seiner Stelle. Lassen Sie uns auf die Details des Ansible Shell -Moduls eingehen.
Verwenden des Ansible Shell -Moduls
Bevor wir Befehle und Skripte ausführen, schauen wir uns die Parameter an, die Sie bei der Verwendung dieses Moduls übergeben müssen, um Werte zu übergeben.
Lassen Sie uns einige Beispiele für die Verwendung von Ansible Shell zu einigen Beispielen erhalten.
Beispiel 1: Ändern des Arbeitsverzeichnisses
Wenn Sie das Arbeitsverzeichnis ändern möchten, bevor Sie einen Befehl ausführen.
- Name: Ändern des Arbeitsverzeichnisses in MydirNachdem wir ein Playbook erstellt haben, können Sie es mit dem Linux -Terminal ausführen, indem Sie ausgeführt werden:
Ansible-Playbook-Testbuch.YMLBeispiel 2: Befehlsausgabe extrahieren
Wenn Sie den Rückgabewert eines Shell -Befehls erfassen und speichern möchten, kann das Schlüsselwort Register verwendet werden.
- Name: Erstellen a .TXT -Datei in $ homeBeispiel 3: Überprüfen des Datums
Beginnen wir zunächst das Datum auf unserem Remote -Server mit dem Namen test überprüfen. Beachten Sie, wie die Syntax des Shell -Moduls hier unterschiedlich ist. Dies ist nur eine weitere Möglichkeit, das Ansible Shell -Modul zu verwenden.
- Name: Überprüfen Sie das DatumWir haben den Befehl Simple Datum verwendet, um das Datum in einem Remote -System zu überprüfen. Darüber hinaus wird die Ausgabe des Befehls (das Datum selbst) in ein Register mit dem Namen DATECMD zurückgegeben. Schließlich zeigen wir den Inhalt der Registervariablen datEcMD an, indem wir sein STDOut -Attribut drucken.
Beispiel 4: Ausführen mehrerer Befehle ausführen
In diesem Beispiel erstellen wir einige Textdateien in einem temporären Verzeichnis.
Aufgaben:Hier haben wir Shellcode verwendet, um drei Dateien zu erstellen, nämlich MyFile1, MyFile2, und MyFile3. Das werden: True Line ermöglicht es Ihnen, der Benutzer des Remote -Hosts zu „werden“. Schließlich verabschieden wir uns ein Chdir -Argument und ändern das Verzeichnis.
Beispiel 5: Anwenden von Umleitung und Rohr
Lassen Sie uns nun sehen, wie Rohre und Umleitung im Ansible Shell -Modul funktioniert. Wir werden einen einfachen LS -Befehl mit etwas Vorverarbeitung durch awk ausführen. Darüber hinaus entfernen wir SED, um leere Linien zu entfernen. Am Ende werden wir die Ausgabe in eine Textdatei umleiten.
- Name: Nehmen Sie eine Liste des Verzeichnisses und füttern Sie es einer DateiZuerst führen wir den oben genannten Befehl aus und speichern sein Ergebnis in Mydir.txt. Anschließend verwenden wir eine andere Befehlskatze, um den Inhalt der Datei in einem Register zu speichern. Schließlich wird diese Registervariable angezeigt.
Wie man Befehlsinjektion verhindern?
Wie wir bereits erwähnt haben, wird das Befehlsmodul als sicherere Möglichkeit, Dinge zu tun. Es hat jedoch etwas begrenzte Funktionalität. Wie kann man das Shell -Modul sicher verwenden??
Sie können den Zitatfilter verwenden, um die variablen Namen zu schützen, die Sie an das Shell -Modul vor der Befehlsinjektion übergeben. Im Folgenden ist ein Beispiel für diese Desinfektion angegeben.
- Name: Erstellen a .TXT mit dem AngebotsfilterEs ist eine gute Praxis, den Zitatfilter immer mit Ihren Variablen zu verwenden. Dadurch wird Hacker davon abgehalten, den Befehl zur Laufzeit zu ändern. Es ist sehr ähnlich wie die SQL -Injektion, aber solange Sie Sicherheitsvorkehrungen treffen, müssen Sie sich keine Sorgen machen!
Abschluss
Das Ansible Shell -Modul ist ein vielseitiges und leistungsfähiges Modul, das die Benutzersteuerung erhöht und die Remote -Konfiguration erheblich erleichtert. In diesem Artikel haben wir uns untersucht, was es tut, welche Parameter es hat und welche Argumente es benötigt und mehr. Hoffentlich sind Sie jetzt gut ausgestattet, um das Ansible Shell -Modul zu verwenden.