Der Ad-Hoc-Befehl ist der einzeilige Ansible-Befehl, der eine Aufgabe auf dem Zielhost ausführt. Es ermöglicht Ihnen, eine einfache einzeilige Aufgabe für einen oder eine Gruppe von Hosts auszuführen, die in der Inventardateikonfiguration definiert sind. Ein Ad-hoc-Befehl hat nur zwei Parameter, die Gruppe eines Hosts, der die Aufgabe ausführen soll, und das auszuführende Ansible-Modul.
Der Ad-Hoc-Befehl bietet Ihnen mehr Vorteile beim Erkunden von Ansible selbst. Sie können Aufgaben ausführen, ohne zuerst ein Playbook zu erstellen, z. B. Server neu starten, Dienste verwalten, die Leitungskonfiguration bearbeiten, eine Datei auf nur einen Host kopieren, nur ein Paket installieren.
In diesem Tutorial werde ich die grundlegende Verwendung des Ansible Ad-Hoc-Befehls zeigen. Ich werde den Ad-Hoc-Befehl verwenden, um einfache Aufgaben auszuführen, die Sie als Systemadministrator täglich benötigen.
Voraussetzungen
Für diesen Leitfaden verwenden wir zwei Ubuntu 18.04 LTS-Server, Bionic Beaver. Der Ansible-Server erhält den Hostnamen „ansible-node“ mit der IP-Adresse 10.5.5.20 und der Provision-Server den Hostnamen „provision“ und die IP-Adresse 10.5.5.21.
Was werden wir tun?
- Grundlegender Ad-hoc-Befehl
- Dateiübertragung
- Update und Upgrade
- Paket verwalten
- Dienste verwalten
- Überprüfe das System
Grundlegende Verwendung von Ad-hoc-Befehlen
Zunächst lernen wir die grundlegende Verwendung von Ansible Ad-Hoc zur Verwaltung von Servern kennen. Wir lernen den grundlegenden Ad-Hoc-Befehl von Ansible kennen, verwenden den Ad-Hoc-Befehl mit SSH-Passwortauthentifizierung, die Rechteausweitung und verwenden den Ad-Hoc-Befehl für eine Gruppe von Hosts.
1. Grundbefehl
Der grundlegende Befehl von ansible ad-hoc gegen „alle“ Hosts in der Inventardatei und die Verwendung des „ping“-Moduls.
ansible all -m ping
- Der erste Parameter „all“ für alle Hosts in der Inventardatei.
- Der zweite Parameter innerhalb der '-m'-Option für das Modul, das das Ping-Modul ausführt.
Jetzt erhalten Sie das Ergebnis wie unten.
Ein Ad-hoc-Befehl für den Bereitstellungsserver war „SUCCESS“, ohne dass Änderungen auf dem Server vorgenommen wurden, und wir erhalten das Ergebnis des „Ping“-Moduls vom Bereitstellungsserver „pong“.
2. Hostgruppe und Einzelhost filtern
Jetzt können Sie den Ad-Hoc-Befehl für eine Gruppe von Hosts verwenden, die bereits in der Bestandsdatei definiert sind. Sie können Ihre benutzerdefinierte Inventardatei oder die Standard-Inventardatei „/etc/ansible/hosts“ verwenden.
Unten sehen Sie ein Beispiel zum Ausführen des Ad-hoc-Befehls für die Gruppe von Hosts mit dem Namen „hakase-testing“, die bereits in der Standardkonfigurationsdatei für das Inventar definiert sind.
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Wenn Sie die benutzerdefinierte Inventardatei verwenden, fügen Sie die Option „-i“ nach dem Namen der Inventardatei hinzu.
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Sie erhalten dasselbe Ergebnis.
Wenn Sie nun die Inventory-Konfiguration mit einem einzelnen Host ausführen möchten, können Sie den Namen des Hosts wie unten verwenden.
ansible provision -m setup -a "filter=ansible_distribution*"
Und der Ad-hoc-Befehl wird nur auf dem „Bereitstellungs“-Server ausgeführt.
3. Verwendung des SSH-Passworts
Jetzt führen wir einen Ad-Hoc-Befehl mit der aufgeforderten SSH-Passwortauthentifizierung aus. Und um dies zu tun, müssen Sie das zusätzliche Paket namens 'sshpass' auf dem 'ansible-node' installieren.
Installieren Sie das sshpass-Paket mit dem folgenden apt-Befehl.
sudo apt install sshpass -y
Führen Sie nun den Ad-hoc-Befehl aus und fügen Sie am Ende die Option „--ask-pass“ hinzu.
ansible hakase-testing -m ping --ask-pass
Und Sie werden nach dem 'SSH-Passwort' für den Server gefragt.
Geben Sie Ihr ssh-Passwort ein und der Ad-hoc-Befehl wird auf dem Server ausgeführt.
4. Rechteausweitung
Das Ansible bietet Funktionen für die Rechteausweitung gegenüber Servern. Wenn Sie den Ad-hoc-Befehl als Nicht-Root-Benutzer ausführen möchten, können Sie die Option „--become“ verwenden, um die Root-Rechte zu erhalten, und die Option „-K“, um das Passwort abzufragen.
Führen Sie den Ad-hoc-Befehl „fdisk -l“ als Benutzer „hakase“ mit der Berechtigungsoption „--become“ und „-K“ aus, um das „SUDO-Passwort“ abzufragen.
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
Unten ist das Ergebnis.
Dateiübertragung
Jetzt verwenden wir den Ad-Hoc-Befehl für die Dateiübertragung zum und vom Server. Wir können eine Datei mit dem Modul „Kopieren“ auf den Bereitstellungsserver übertragen und mit dem Modul „Fetch“ eine Datei vom Server herunterladen.
1. Datei auf Host hochladen
In diesem Beispiel führen wir den Ad-hoc-Befehl aus und verwenden das Modul „copy“, um die sudoers-Konfiguration für den Benutzer hakase in das Verzeichnis „/etc/sudoers.d“ in der Gruppe „hakase-testing“ hochzuladen.
Führen Sie den folgenden Ad-hoc-Befehl aus.
ansible hakase-testing -m copy -a 'src=/home/hakase/hakase-sudo.conf dest=/etc/sudoers.d/hakase owner=root mode=0644' -u hakase --become -K
Jetzt werden Sie nach dem 'SUDO-Passwort' für den hakase-Benutzer gefragt. Geben Sie das Passwort ein und Sie erhalten das Ergebnis wie unten.
Die Datei wurde in das Zielverzeichnis „dest“ hochgeladen, und Sie erhalten das Ergebnis „geändert“ als „true“.
2. Datei vom Host herunterladen
Jetzt werden wir einen Ad-hoc-Befehl mit dem „fetch“-Modul verwenden, um die Datei vom Bereitstellungsserver auf den lokalen „ansible-node“-Server herunterzuladen.
Laden Sie die Konfigurationsdatei „/etc/sudoers.d/hakase“ vom „Provision“-Server in das lokale Verzeichnis namens „backup“ herunter.
ansible provision -m fetch -a 'src=/etc/sudoers.d/hakase dest=/home/hakase/backup/hakase-sudoers flat=yes'
Und Sie erhalten die Datei namens „hakase-sudoers“ im Verzeichnis „backup“.
Schritt 3 – Repository aktualisieren und Pakete aktualisieren
Um das Repository von Ubuntu-Servern zu aktualisieren und zu aktualisieren, können wir den Ad-hoc-Befehl mit dem apt-Modul verwenden.
Aktualisieren Sie das Repository in der Gruppe hakase-testing.
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Aktualisieren Sie jetzt die Repositories und aktualisieren Sie alle Pakete mit der Option 'upgrade=dist' auf die neueste Version.
ansible hakase-testing -m apt -a 'upgrade=dist update_cache=yes' --become
Warten Sie, bis alle Pakete aktualisiert werden.
Pakete verwalten
Dies ist sehr nützlich, wenn Sie versuchen, Ihr eigenes Playbook zu erstellen und zu debuggen. Denn manchmal muss ein zusätzliches Paket auf dem System installiert werden. Dieser Ad-hoc-Befehl bietet Ihnen also eine einfache Möglichkeit, dieses Paket zu installieren, ohne sich bei jedem Server anzumelden.
1. Paket installieren
Installieren Sie ein einzelnes Paket mit dem Ad-hoc-Befehl mit dem apt-Modul wie unten beschrieben.
ansible hakase-testing -m apt -a 'name=nginx state=latest' --become
2. Paket entfernen
Entfernen Sie das Paket und löschen Sie alle Konfigurationen, die sich auf das Paket beziehen.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Automatisch entfernen
Das folgende Beispiel entfernt das nginx-Paket und löscht alle konfigurationsbezogenen und entfernt dann alle nicht verwendeten Pakete auf dem System.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Dienste verwalten
In diesem Schritt verwenden wir das Dienstmodul des Ad-hoc-Befehls zum Verwalten des Systemdienstes auf dem Bereitstellungsserver.
1. Dienste starten
Starten Sie den nginx-Dienst und fügen Sie ihn der Startzeit hinzu.
ansible hakase-testing -m service -a 'name=nginx state=started enabled=yes' --become
Sie erhalten das Ergebnis „geändert“ und „aktiviert“ als „wahr“.
2. Dienst neu starten
Wenn Sie den Dienst neu starten möchten, können Sie den folgenden Befehl verwenden.
ansible hakase-testing -m service -a 'name=nginx state=restarted' --become
Der nginx-Dienst wurde neu gestartet.
3. Stoppen Sie einen Dienst
Um den Dienst zu stoppen, ändern Sie den 'state'-Wert in 'stopped'.
ansible hakase-testing -m service -a 'name=nginx state=stopped' --become
Der nginx-Dienst auf den Servern „hakase-testing“ wurde gestoppt.
Überprüfen des Systems
Jetzt verwenden wir das Modul „shell“ innerhalb des Ad-hoc-Befehls. Und wir werden eine einfache Systemüberwachung mit einem einfachen Linux-Befehl über Ansible Ad-hoc durchführen.
Installieren Sie zuerst das 'sysstat'-Paket auf allen Servern mit dem folgenden Ad-hoc-Befehl.
ansible hakase-testing -m apt -a 'name=sysstat state=latest' --become
Warten Sie auf die Installation des 'sysstat'-Pakets.
Sobald dies abgeschlossen ist, können Sie alle Server überprüfen.
1. Datenträger verfügbar
Überprüfen Sie die auf der Root-Partition verfügbare Festplatte mit dem Befehl fdisk.
ansible hakase-testing -m shell -a 'df -h /dev/sda2' --become
Ändern Sie '/dev/sda2' mit Ihrem eigenen Pfad.
2. RAM-Speichernutzung
Überprüfen Sie nun die RAM-Speichernutzung auf allen Servern mit dem Befehl 'free -m'.
ansible hakase-testing -m shell -a 'free -m' --become
Und Ihnen wird das Ergebnis wie folgt angezeigt.
3. CPU-Auslastung
Überprüfen der CPU-Auslastung aller Server mit dem Befehl mpstat.
ansible hakase-testing -m shell -a 'mpstat -P ALL' --become
Der Befehl mpstat ist Teil des 'sysstat'-Pakets.
4. Ports öffnen
Überprüfen der offenen Ports auf allen Systemen mit netstat über den Ad-hoc-Befehl.
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Betriebszeit
Überprüfen Sie nun die Betriebszeit jedes Servers.
ansible hakase-testing -m shell -a 'uptime' --become