Ansible Ad-Hoc Befehle

AnsibleAnsibleBeginner
Jetzt üben

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

Einführung

In diesem Lab lernen Sie Ansible ad-hoc Befehle kennen. Ad-hoc Befehle sind schnelle, einmalige Aufgaben, die Sie ausführen können, ohne dass ein vollständiges Playbook erforderlich ist. Sie eignen sich perfekt für einfache Operationen wie das Überprüfen des Systemstatus, die Verwaltung von Dateien oder die Ausführung von schnellen Befehlen auf mehreren Servern. Am Ende dieses Labs verstehen Sie, wie Sie Ad-hoc Befehle effektiv nutzen können, was für die Ausführung von schnellen Aufgaben und die Fehlersuche in Ihrer von Ansible verwalteten Umgebung von entscheidender Bedeutung ist.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ansible(("Ansible")) -.-> ansible/ModuleOperationsGroup(["Module Operations"]) ansible(("Ansible")) -.-> ansible/InventoryManagementGroup(["Inventory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) ansible/ModuleOperationsGroup -.-> ansible/command("Execute Commands") ansible/ModuleOperationsGroup -.-> ansible/copy("Transfer Files") ansible/ModuleOperationsGroup -.-> ansible/file("Manage Files/Directories") ansible/ModuleOperationsGroup -.-> ansible/ping("Network Test") ansible/InventoryManagementGroup -.-> ansible/groups_inventory("Define Inventory Groups") linux/SystemInformationandMonitoringGroup -.-> linux/df("Disk Space Reporting") subgraph Lab Skills ansible/command -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} ansible/copy -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} ansible/file -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} ansible/ping -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} ansible/groups_inventory -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} linux/df -.-> lab-390441{{"Ansible Ad-Hoc Befehle"}} end

Grundlegendes Verständnis der Struktur von Ansible Ad-hoc Befehlen

Beginnen wir mit dem Verständnis der grundlegenden Struktur eines Ansible Ad-hoc Befehls. Die allgemeine Syntax lautet:

ansible [pattern] -m [module] -a "[module options]"

Hierbei bedeuten:

  • [pattern] ist der Host oder die Gruppe von Hosts aus Ihrem Inventar, auf die Sie abzielen möchten.
  • -m [module] gibt an, welches Ansible-Modul verwendet werden soll.
  • -a "[module options]" liefert Argumente an das Modul.

Bevor wir mit dem Ausführen von Befehlen beginnen, stellen wir sicher, dass wir eine geeignete Inventar-Datei haben. Erstellen oder bearbeiten Sie die Inventar-Datei:

nano /home/labex/project/inventory

Fügen Sie den folgenden Inhalt hinzu:

localhost ansible_connection=local

[webservers]
localhost

[dbservers]
localhost

Speichern Sie die Datei und verlassen Sie den Editor.

Jetzt versuchen wir einen einfachen Ad-hoc Befehl, um alle Hosts in unserem Inventar zu pingen:

ansible all -i /home/labex/project/inventory -m ping

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

localhost | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Dieser Befehl verwendet das ping-Modul, um die Konnektivität zu allen Hosts im Inventar zu überprüfen. Das Schlüsselwort all zielt auf alle Hosts ab.

Lassen Sie uns diesen Befehl analysieren:

  • all ist das Muster (pattern), das alle Hosts im Inventar anspricht.
  • -i /home/labex/project/inventory gibt die zu verwendende Inventar-Datei an.
  • -m ping teilt Ansible mit, das ping-Modul zu verwenden.

Ausführen von Befehlen mit dem Command-Modul

Eines der am häufigsten in Ad-hoc Befehlen verwendeten Module ist das command-Modul. Es ermöglicht Ihnen, beliebige Befehle auf den Zielhosts auszuführen.

Lassen Sie uns das command-Modul verwenden, um den Speicherplatz auf allen Hosts zu überprüfen:

ansible all -i /home/labex/project/inventory -m command -a "df -h"

Sie sollten eine Ausgabe sehen, die die Speicherplatzauslastung auf Ihrem lokalen Rechner anzeigt.

Jetzt versuchen wir, einen Befehl nur auf der Gruppe der Webserver auszuführen:

ansible webservers -i /home/labex/project/inventory -m command -a "uptime"

Dieser Befehl zeigt die Betriebszeit aller Hosts in der Webservergruppe an.

Das command-Modul ist das Standardmodul. Sie können also -m command weglassen, wenn Sie dieses Modul verwenden. Beispiel:

ansible dbservers -i /home/labex/project/inventory -a "free -m"

Dieser Befehl zeigt die Speichernutzung auf allen Hosts in der Datenbankservergruppe an.

Denken Sie daran, dass das command-Modul keine Shell-Variablen oder Operationen wie |, >, <, & unterstützt. Für diese müssen Sie das shell-Modul verwenden.

Verwenden anderer nützlicher Module in Ad-hoc Befehlen

Während das command-Modul vielseitig einsetzbar ist, bietet Ansible viele andere Module, die in Ad-hoc Befehlen sehr nützlich sein können. Lassen Sie uns einige davon näher betrachten.

  1. Das copy-Modul:
    Dieses Modul wird verwendet, um Dateien vom lokalen Rechner auf die Remote-Hosts zu kopieren. Erstellen wir eine einfache Datei und kopieren Sie sie auf alle Hosts:

    echo "Hello from Ansible" > /home/labex/project/hello.txt
    ansible all -i /home/labex/project/inventory -m copy -a "src=/home/labex/project/hello.txt dest=/tmp/hello.txt"

    Dieser Befehl kopiert die Datei hello.txt vom lokalen Rechner in das Verzeichnis /tmp auf allen Remote-Hosts.

  2. Das file-Modul:
    Dieses Modul wird zur Verwaltung von Dateien und Verzeichnissen verwendet. Erstellen wir ein Verzeichnis auf allen Webservern:

    ansible webservers -i /home/labex/project/inventory -m file -a "path=/tmp/test_dir state=directory mode=0755"

    Dieser Befehl erstellt ein Verzeichnis namens test_dir im Verzeichnis /tmp auf allen Webservern mit den Berechtigungen 0755.

  3. Das setup-Modul:
    Dieses Modul wird verwendet, um Informationen (Facts) über die Remote-Hosts zu sammeln. Es wird automatisch am Anfang von Playbooks ausgeführt, kann aber auch in Ad-hoc Befehlen verwendet werden:

    ansible dbservers -i /home/labex/project/inventory -m setup

    Dieser Befehl zeigt eine große Menge von Informationen über die Hosts in der Datenbankservergruppe an. Um die Ausgabe zu beschränken, können Sie Filter verwenden:

    ansible dbservers -i /home/labex/project/inventory -m setup -a "filter=ansible_distribution*"

    Dies zeigt nur Informationen im Zusammenhang mit der Betriebssystemverteilung an.

Diese Beispiele zeigen, wie verschiedene Module verwendet werden können, um verschiedene Aufgaben schnell mit Ad-hoc Befehlen auszuführen.

Zusammenfassung

In diesem Lab haben Sie sich mit Ansible Ad-hoc Befehlen vertraut gemacht und gelernt, wie Sie sie effektiv einsetzen können. Hier sind die wichtigsten Erkenntnisse:

  1. Ad-hoc Befehle sind schnelle, einmalige Aufgaben, die ohne die Erstellung eines vollständigen Playbooks ausgeführt werden können.

  2. Die grundlegende Struktur eines Ad-hoc Befehls lautet:

    ansible [pattern] -m [module] -a "[module options]"
  3. Das ping-Modul ist nützlich, um die Konnektivität zu Hosts zu überprüfen.

  4. Das command-Modul ermöglicht es Ihnen, beliebige Befehle auf Zielhosts auszuführen. Es ist das Standardmodul, sodass -m command weggelassen werden kann.

  5. Andere nützliche Module für Ad-hoc Befehle sind:

    • copy: zum Kopieren von Dateien auf Remote-Hosts
    • file: zur Verwaltung von Dateien und Verzeichnissen
    • setup: zum Sammeln von Informationen (Facts) über Remote-Hosts
  6. Sie können bestimmte Gruppen von Hosts ansprechen, indem Sie die in Ihrer Inventar-Datei definierten Gruppennamen verwenden.

  7. Ad-hoc Befehle eignen sich hervorragend für schnelle Aufgaben, aber für komplexere oder wiederholbare Operationen sind Playbooks besser geeignet.

Ad-hoc Befehle sind eine leistungsstarke Funktion von Ansible, die es Ihnen ermöglicht, schnelle Aufgaben in Ihrer Infrastruktur auszuführen. Sie sind besonders nützlich für die Fehlersuche, das Sammeln von Informationen oder das Vornehmen von schnellen Änderungen. Für komplexere oder wiederholbare Aufgaben ist es jedoch besser, Playbooks zu verwenden.

Wenn Sie weiterhin mit Ansible arbeiten, üben Sie das Verwenden verschiedener Module in Ad-hoc Befehlen. Sehen Sie sich die Ansible-Dokumentation an, um mehr über Module und ihre Verwendung zu erfahren. Denken Sie daran, dass Ad-hoc Befehle zwar leistungsstark sind, aber nicht die Idempotenz und Reproduzierbarkeit von Playbooks bieten. Verwenden Sie sie daher in Produktionsumgebungen mit Bedacht.