Ansible Anleitung: Der Ad-Hoc-Befehl
Der Ad-Hoc-Befehl ist der einzeilige ansible Befehl, der eine Aufgabe auf dem Zielrechner ausführt. Es ermöglicht Ihnen, einfache einzeilige Aufgaben gegen einen oder mehrere Hosts auszuführen, die in der Konfiguration der Bestandsdatei definiert sind. Ein Ad-Hoc-Befehl hat nur zwei Parameter, die Gruppe eines Hosts, den Sie ausführen möchten, und das Ansible-Modul, das ausgeführt werden soll.
Der Ad-Hoc-Befehl bietet Ihnen weitere Vorteile für die Erkundung von ansible selbst: Sie können Aufgaben ausführen, ohne vorher ein Playbook zu erstellen, wie 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 für Ihre tägliche Arbeit als Systemadministrator erforderlich sein können.
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.5.20 und der Provisionsserver mit dem Hostnamen ‚provision‘ und der IP-Adresse 10.5.5.5.21.
Was werden wir tun?
- Grundlegender Ad-Hoc-Befehl
- Dateiübertragung
- Aktualisierung und Upgrade
- Paket verwalten
- Verwalten von Diensten
- Prüfsystem
Grundlegende Verwendung von Ad-Hoc-Befehlen
Erstens werden wir die grundlegende Verwendung von Ansible Ad-Hoc für die Serververwaltung erlernen. Wir werden den Ansible Ad-Hoc-Basisbefehl lernen, indem wir den Ad-Hoc-Befehl mit ssh-Passwort-Authentifizierung, die Berechtigungseskalation und den Ad-Hoc-Befehl gegen eine Gruppe von Hosts verwenden.
1. Grundlegender Befehl
Der grundlegende Befehl von ansible ad-hoc against ‚all‘ hosts in der Inventardatei und unter Verwendung des Moduls ‚ping‘.
ansible all -m ping
- Der erste Parameter ‚all‘ für alle Hosts in der Inventardatei.
- Der zweite Parameter innerhalb der Option‘-m‘ für das Modul, der das Ping-Modul startet.
Nun erhalten Sie das Ergebnis wie unten beschrieben.
Ein Ad-hoc-Befehl gegen den Bereitstellungsserver wurde ohne Änderungen auf dem Server mit’SUCCESS‘ versehen und wir erhalten das Ergebnis des Moduls’ping‘ vom Bereitstellungsserver’pong‘.
2. Filtert Hosts Gruppe und Einzelrechner
Jetzt können Sie den Ad-Hoc-Befehl gegen eine Gruppe von Hosts verwenden, die bereits in der Inventardatei definiert sind. Du kannst deine eigene Inventarisierungsdatei verwenden oder die Standardinventardatei’/etc/ansible/hosts‘.
Nachfolgend finden Sie ein Beispiel für die Ausführung des Ad-hoc-Befehls gegen die Gruppe der Hosts namens’hakase-testing‘, die bereits in der Standardkonfigurationsdatei des Inventars definiert sind.
ansible hakase-testing -m setup -a "filter=ansible_distribution*"
Wenn Sie die benutzerdefinierte Bestandsdatei verwenden, fügen Sie die Option „-i“ hinzu, gefolgt vom Namen der Bestandsdatei.
ansible hakase-testing -i hosts -m setup -a "filter=ansible_distribution*"
Sie erhalten das gleiche Ergebnis.
Wenn Sie nun in der Bestandskonfiguration gegen einen einzelnen Host laufen möchten, können Sie den Namen des Hosts wie unten beschrieben verwenden.
ansible provision -m setup -a "filter=ansible_distribution*"
Und der Ad-hoc-Befehl wird nur auf dem Server „provision“ ausgeführt.
3. SSH-Passwort verwenden
Nun werden wir einen Ad-Hoc-Befehl mit der geforderten ssh-Passwort-Authentifizierung ausführen. Und um dies zu tun, müssen Sie das zusätzliche Paket namens ’sshpass‘ auf dem ‚ansible-node‘ installieren.
Installiere 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 gegen den Server ausgeführt.
4. Privilegien-Eskalation
Das ansible bietet Funktionen für die Privilegienerweiterung gegen Server. 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 dem‘-K‘ aus, um das’SUDO-Passwort‘ anzugeben.
ansible hakase-testing -m shell -a 'fdisk -l' -u hakase --become -K
Nachfolgend sehen Sie das Ergebnis.
Dateiübertragung
Jetzt werden wir den Befehl Ad-Hoc für den Dateitransfer zum und vom Server verwenden. Wir können eine Datei mit dem Modul „copy“ auf den Bereitstellungsserver übertragen und mit dem Modul „fetch“ vom Server herunterladen.
1. Datei auf den Host hochladen
Für dieses Beispiel werden wir den Ad-hoc-Befehl ausführen und das Modul „copy“ verwenden, um die sudoers-Konfiguration für user 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
Nun werden Sie nach dem’SUDO Passwort‘ für den hakase Benutzer gefragt. Geben Sie das Passwort ein und Sie erhalten das Ergebnis wie unten beschrieben.
Die Datei wurde in das Zielverzeichnis von ‚dest‘ hochgeladen, und Sie erhalten das Ergebnis von ‚changed‘ als ‚true‘.
2. Datei vom Host herunterladen
Jetzt werden wir einen Ad-hoc-Befehl mit dem Modul’fetch‘ verwenden, um die Datei vom Provisionierungsserver 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 ‚hakase-sudoers‘ im Verzeichnis ‚backup‘.
Schritt 3 – Update Repository und Upgrade-Pakete
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 über das Hakase-Testen der Gruppe.
ansible hakase-testing -m apt -a 'update_cache=yes' --become
Aktualisieren Sie nun 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 du versuchst, dein eigenes Playbook aufzubauen und zu debuggen. Denn manchmal benötigen Sie ein zusätzliches Paket, das auf dem System installiert werden muss. Dieser Ad-hoc-Befehl gibt Ihnen also eine einfache Möglichkeit, dieses Paket zu installieren, ohne sich bei jedem Server anzumelden.
1. Installationspaket
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 bereinigen Sie alle mit dem Paket verbundenen Konfigurationen.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes' --become
3. Automatische Entfernung
Das folgende Beispiel ist das Entfernen des nginx-Pakets und das Löschen aller konfigurationsbezogenen Pakete und das anschließende Entfernen aller unbenutzten Pakete auf dem System.
ansible hakase-testing -m apt -a 'name=nginx state=absent purge=yes autoremove=yes' --become
Verwalten von Diensten
In diesem Schritt verwenden wir das Servicemodul auf dem Ad-hoc-Befehl zur Verwaltung des Systemdienstes auf dem Provisionierungsserver.
1. Dienste starten
Starten Sie den nginx-Dienst und fügen Sie ihn zur Bootzeit 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 Neustart
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. Einen Dienst beenden
Um den Dienst zu stoppen, ändern Sie den Wert von „state“ auf „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 werden wir das Modul’shell‘ innerhalb des Ad-hoc-Befehls verwenden. Und wir werden eine einfache Systemüberwachung mit einem einfachen Linux-Befehl durch das Ansible ad-hoc durchführen.
Installieren Sie zunächst das Paket’sysstat‘ 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 Pakets’sysstat‘.
Sobald es fertig ist, können Sie alle Server überprüfen.
1. Festplatte 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
Ändere das ‚/dev/sda2‘ mit deinem eigenen Pfad.
2. RAM-Speicherauslastung
Überprüfen Sie nun die RAM-Speicherauslastung auf allen Servern mit dem Befehl „free -m“.
ansible hakase-testing -m shell -a 'free -m' --become
Und Sie erhalten das Ergebnis wie unten gezeigt.
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 Pakets’sysstat‘.
4. Offene Ports
Überprüfung der offenen Ports auf allen Systemen, die das netstat verwenden, durch den Ad-hoc-Befehl.
ansible hakase-testing -m shell -a 'netstat -plntu' --become
5. Betriebszeit
Überprüfen Sie nun die Betriebszeit der einzelnen Server.
ansible hakase-testing -m shell -a 'uptime' --become