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?

  1. Grundlegender Ad-Hoc-Befehl
  2. Dateiübertragung
  3. Aktualisierung und Upgrade
  4. Paket verwalten
  5. Verwalten von Diensten
  6. 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.

Grundlegende Verwendung von Ad-hoc-Befehlen

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*"

Filtert Hosts Gruppe und Einzelrechner

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.

Nur auf einem bereitgestellten Server ausführen

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.

SSH-Passwort verwenden

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.

Privilegien-Eskalation

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.

Datei auf den Host hochladen

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‘.

Datei vom Host herunterladen

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

Das könnte Dich auch interessieren …