Einsatz des Ad-Hoc-Werkzeugs

Ansible ist ein vielseitiges Tool zur Automatisierung von IT-Infrastrukturen. Neben der Arbeit mit Playbooks bietet Ansible eine schnelle und einfache Möglichkeit, sofortige Aufgaben auszuführen: Ad-Hoc-Kommandos. Mit Ad-Hoc-Befehlen kann man unkompliziert einzelne Aufgaben auf Zielsystemen ausführen, ohne vorher ein Playbook schreiben zu müssen. Das ist besonders nützlich, wenn man kleinere, einmalige Aufgaben durchführen möchte, wie das Installieren eines Pakets, das Neustarten eines Dienstes oder das Überprüfen von Systeminformationen.

In diesem Blogbeitrag zeige ich, wie man Ad-Hoc-Kommandos mit Ansible einsetzt, und gebe einige praktische Beispiele.

1. Grundstruktur eines Ad-Hoc-Kommandos

Ad-Hoc-Kommandos verwenden die ansible-CLI und folgen einem einfachen Muster:

ansible [Hosts] -m [Modulname] -a "[Argumente]" -i [Inventory]
  • Hosts: Gibt an, auf welchen Maschinen das Kommando ausgeführt wird. Dies kann eine Hostgruppe, ein einzelner Host oder alle Hosts sein (all).
  • Modulname: Hier wird angegeben, welches Ansible-Modul ausgeführt werden soll (z. B. ping, shell, apt, yum).
  • Argumente: Parameter oder Befehle, die an das Modul übergeben werden.
  • Inventory: Liste der zu verwaltenden Hosts. Standardmäßig verwendet Ansible /etc/ansible/hosts, aber man kann auch eine eigene Datei oder dynamisches Inventory angeben.

2. Beispiel: Pingen von Hosts

Der einfachste Einsatz von Ad-Hoc-Kommandos ist das Prüfen der Erreichbarkeit von Hosts. Dafür verwendet man das ping-Modul:

ansible all -m ping

Erklärung:

  • all: Führt das Kommando auf allen in der Inventardatei gelisteten Hosts aus.
  • -m ping: Verwendet das Ansible-Ping-Modul, um zu testen, ob die Hosts erreichbar sind.

Das ping-Modul sendet kein ICMP-Ping, sondern stellt sicher, dass Ansible auf den Remote-Host zugreifen kann.


3. Pakete installieren

Eine der häufigsten Aufgaben in der Systemadministration ist das Installieren von Paketen. Mit Ansible kann man dies auf mehreren Maschinen gleichzeitig durchführen. Verwenden wir das apt-Modul, um Apache auf mehreren Maschinen zu installieren:

ansible webserver -m apt -a "name=apache2 state=present"

Erklärung:

  • webserver: Hostgruppe aus dem Inventory, die die Webserver repräsentiert.
  • -m apt: Verwendet das apt-Modul (für Debian-basierte Systeme wie Ubuntu).
  • -a "name=apache2 state=present": Installiert das Paket apache2. Der Zustand present bedeutet, dass das Paket installiert sein soll.

Für Red-Hat-basierte Systeme würde man das yum-Modul verwenden:

ansible webserver -m yum -a "name=httpd state=present"

4. Dienste verwalten

Nach der Installation eines Pakets muss der Dienst oft gestartet oder neu gestartet werden. Mit dem service-Modul kann man Dienste verwalten.

Beispiel: Apache-Webserver starten:

ansible webserver -m service -a "name=apache2 state=started"

Erklärung:

  • -m service: Verwendet das service-Modul.
  • -a "name=apache2 state=started": Startet den Apache-Dienst auf den Zielhosts.

5. Dateien übertragen

Ein weiteres nützliches Szenario ist die Übertragung von Dateien auf entfernte Maschinen. Das copy-Modul ermöglicht dies.

Beispiel: Eine lokale Datei auf alle Webserver kopieren:

ansible webserver -m copy -a "src=/path/to/local/file dest=/path/to/remote/location"

Erklärung:

  • -m copy: Verwendet das copy-Modul.
  • src: Der Pfad zur lokalen Datei.
  • dest: Der Pfad auf dem Remote-Host, wohin die Datei kopiert wird.

6. Befehle auf entfernten Systemen ausführen

Manchmal möchte man direkt Befehle auf entfernten Maschinen ausführen. Dafür kann das command-Modul oder das shell-Modul verwendet werden. Der Unterschied: command führt einfache Befehle ohne Shell-Kontext aus, während shell Shell-Befehle und Skripte ausführen kann.

Beispiel: Einen Befehl mit dem command-Modul ausführen:

ansible all -m command -a "uptime"

Erklärung:

  • -m command: Führt den angegebenen Befehl (uptime) auf allen Hosts aus.

Beispiel: Einen Befehl mit dem shell-Modul ausführen:

ansible all -m shell -a "echo Hello, World!"

7. Benutzer erstellen

Verwalten von Benutzern ist ein weiterer häufiger Anwendungsfall. Mit dem user-Modul können Benutzerkonten erstellt oder geändert werden.

Beispiel: Einen neuen Benutzer erstellen:

ansible all -m user -a "name=testuser state=present"

Erklärung:

  • -m user: Verwendet das user-Modul.
  • name=testuser state=present: Erstellt den Benutzer testuser, wenn er noch nicht existiert.

8. System neu starten

Falls nach Konfigurationsänderungen ein Neustart erforderlich ist, kann man dies ebenfalls mit einem Ad-Hoc-Befehl erledigen.

Beispiel: Remote-Hosts neu starten:

ansible all -m reboot

Erklärung:

  • -m reboot: Verwendet das reboot-Modul, um alle Hosts neu zu starten.

9. Fakten sammeln

Ansible kann Informationen über Remote-Systeme sammeln, sogenannte „Fakten“. Das Modul dafür heißt setup. Es liefert detaillierte Informationen über Hardware, Betriebssystem, Netzwerkschnittstellen und mehr.

Beispiel: Fakten über alle Hosts sammeln:

ansible all -m setup

Beispiel: Informationen zu einer bestimmten Netzwerk-Schnittstelle abrufen:

ansible all -m setup -a 'filter=ansible_eth0'

Erklärung:

  • -m setup: Verwendet das setup-Modul.
  • filter=ansible_eth0: Filtert die Informationen für die Schnittstelle eth0.

10. Verwendung eines Inventar-Filters

Mit Ad-Hoc-Kommandos kann man auch spezielle Inventargruppen ansprechen oder Hosts filtern.

Beispiel: Alle Hosts in der Gruppe „dbserver“ ansprechen:

ansible dbserver -m ping

Beispiel: Ansprechen eines spezifischen Hosts:

ansible host1.example.com -m ping

Fazit

Ansible Ad-Hoc-Kommandos sind ein mächtiges Werkzeug für Administratoren, um schnell und effizient Aufgaben auf entfernten Systemen auszuführen. Sie sind ideal für einmalige oder gelegentliche Aufgaben, bei denen kein vollständiges Playbook erforderlich ist. Mit den Ad-Hoc-Kommandos kann man von der Systemüberprüfung über die Paketinstallation bis hin zur Benutzerverwaltung viele alltägliche Aufgaben bewältigen.

Ad-Hoc-Kommandos bieten eine einfache Möglichkeit, mit Ansible zu beginnen, und sind ein hervorragendes Werkzeug für schnelle und unkomplizierte Automatisierung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert