Installation und Inventar

AnsibleBeginner
Jetzt üben

Einführung

In diesem Lab machen Sie Ihre ersten Schritte in der Welt von Ansible, einem leistungsfähigen Open-Source-Tool zur Automatisierung.

Stellen Sie sich vor, Sie müssten 100 Server verwalten. Sich bei jedem einzelnen Server anzumelden, um Software zu installieren oder Einstellungen zu ändern, wäre mühsam und fehleranfällig. Mit Ansible verwalten Sie diese Server, die als verwaltete Knoten bezeichnet werden, von einem einzigen Steuerknoten aus, ohne auf den Zielsystemen Agents zu installieren.

Dieses agentenlose Design ist ein wichtiger Grund dafür, dass Ansible in Betriebsteams so beliebt geworden ist. Sie müssen dadurch weniger zusätzliche Software auf jedem Host warten. Außerdem baut Ansible auf Werkzeugen auf, denen Administratoren bereits vertrauen, insbesondere auf SSH.

Ansible arbeitet folgendermaßen:

  1. Verbindung herstellen: Ansible verbindet sich über SSH mit den Servern. SSH ist dasselbe Werkzeug, das Sie für die Remote-Anmeldung verwenden.
  2. Anweisungen lesen: Ansible liest Anweisungen aus einfachen Textdateien, die in YAML geschrieben sind.
  3. Kleine Programme übertragen: Ansible überträgt kleine Programme, sogenannte Module, auf die Server, um dort die Aufgaben auszuführen.

Dieses agentenlose Modell ist ein Grund dafür, dass Ansible so beliebt geworden ist. Es baut auf Werkzeugen auf, die Linux-Administratoren bereits kennen, insbesondere auf SSH und textbasierten Konfigurationen.

In diesem Lab übernehmen Sie sowohl die Rolle des Verwalters als auch die des verwalteten Systems. Sie installieren Ansible in Ihrer Umgebung und konfigurieren es so, dass es sich selbst (localhost) verwaltet. Auf diese Weise können Sie die Grundlagen sicher erlernen.

Sie lernen:

  • Ansible mit dem Paketmanager zu installieren.
  • SSH-Schlüssel einzurichten, damit sich Ansible ohne Passwort anmelden kann.
  • Eine Inventardatei zu erstellen, in der die zu verwaltenden Computer aufgelistet sind.
  • Die Verbindung mit dem ping-Modul zu testen.

Ansible installieren

Installieren Sie zunächst die Ansible-Software auf Ihrem Rechner. Da Sie Ubuntu verwenden, können Sie den Paketmanager apt nutzen. Er ist vergleichbar mit einem „App Store“ für Linux-Befehlszeilenwerkzeuge.

Obwohl das Setup-Skript bereits eine Aktualisierung durchgeführt hat, sollten Sie sicherstellen, dass Ihre Paketliste aktuell ist:

sudo apt update

Installieren Sie Ansible anschließend mit diesem Befehl:

sudo apt install ansible -y

Bedeutung des Befehls:

  • sudo: Führt den Befehl mit Administratorrechten (Root-Rechten) aus.
  • apt install: Weist den Paketmanager an, ein Programm zu installieren.
  • ansible: Der Name des gewünschten Pakets.
  • -y: Beantwortet Bestätigungsabfragen automatisch mit „yes“, zum Beispiel „Do you want to continue?“.

Überprüfen Sie nach Abschluss der Installation die Version:

ansible --version

Die Ausgabe sollte mit ansible [core 2.x.x] beginnen. Das bestätigt, dass Ansible installiert und einsatzbereit ist.

SSH-Schlüssel erzeugen

Ansible verwendet SSH (Secure Shell), um mit Servern zu kommunizieren. SSH ist die Standardmethode für den Remote-Zugriff auf Linux-Server.

Deshalb ist das Inventar besonders wichtig. Ansible benötigt eine klare Liste der vorhandenen Rechner, ihrer Gruppierung und der Informationen, über die sie erreichbar sind. Das Inventar ist praktisch das Adressbuch Ihres Automatisierungssystems.

Standardmäßig erfordert SSH ein Passwort. Für Automatisierungswerkzeuge wie Ansible ist es jedoch nicht praktikabel, bei jeder Verbindung zu einem Server ein Passwort einzugeben. Stattdessen verwenden Sie SSH-Schlüssel.

Stellen Sie sich SSH-Schlüssel wie ein Schloss und einen Schlüssel vor:

  • Öffentlicher Schlüssel (das Schloss): Diesen hinterlegen Sie auf jedem Server, auf den Sie zugreifen möchten.
  • Privater Schlüssel (der Schlüssel): Diesen bewahren Sie sicher auf Ihrem Steuerrechner auf.

Wenn Ansible eine Verbindung herstellt, prüft der Server, ob Ihr „Schlüssel“ zu seinem „Schloss“ passt. Ist dies der Fall, erhalten Sie ohne Passwort Zugriff.

Erzeugen Sie ein Schlüsselpaar mit folgendem Befehl:

ssh-keygen -t rsa -b 2048 -N "" -f ~/.ssh/id_rsa

Bedeutung des Befehls:

  • ssh-keygen: Das Werkzeug zum Erzeugen von Schlüsseln.
  • -t rsa: Erzeugt einen Schlüssel vom Typ RSA (Standard).
  • -b 2048: Legt eine Schlüssellänge von 2048 Bit fest (ausreichend sicher).
  • -N "": Legt eine leere Passphrase fest. Das ist entscheidend: Sie werden dadurch nicht nach einem Passwort für die Verwendung dieses Schlüssels gefragt, sodass Ansible vollständig automatisiert ausgeführt werden kann.
  • -f ~/.ssh/id_rsa: Speichert den Schlüssel am Standardspeicherort.

Prüfen Sie, ob die Dateien erstellt wurden:

ls -l ~/.ssh/

Die Ausgabe sollte id_rsa (Ihren geheimen privaten Schlüssel) und id_rsa.pub (Ihren öffentlichen Schlüssel) enthalten.

Ihren Schlüssel autorisieren

Nachdem Sie einen Schlüssel erzeugt haben, müssen Sie den öffentlichen Schlüssel auf dem zu verwaltenden Server hinterlegen. In diesem Lab verwalten Sie localhost, also denselben Rechner, auf dem Sie arbeiten.

Dieser Schritt zeigt die Trennung zwischen Authentifizierung und Automatisierungslogik. Bevor Ansible Aufgaben automatisieren kann, benötigt es zunächst eine zuverlässige, nicht-interaktive Methode zur Authentifizierung am Zielsystem.

Fügen Sie den Inhalt von id_rsa.pub in die Datei authorized_keys im Verzeichnis .ssh ein.

Normalerweise würden Sie dafür einen Befehl wie ssh-copy-id verwenden. Dieser Befehl fragt jedoch normalerweise zunächst nach einem Passwort, um Ihre Identität zu bestätigen. Da diese Lab-Umgebung ohne Passwort arbeitet, kopieren Sie den Schlüssel manuell.

Führen Sie diesen Befehl aus, um Ihren öffentlichen Schlüssel an die Liste der autorisierten Schlüssel anzuhängen:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Bedeutung des Befehls:

  • cat ...: Liest Ihren öffentlichen Schlüssel.
  • >>: Hängt die Ausgabe an das Ende der Zieldatei an, anstatt die Datei zu überschreiben.
  • .../authorized_keys: In dieser Datei prüft SSH, wer sich anmelden darf.

Setzen Sie nun die korrekten Berechtigungen, damit SSH der Datei vertraut:

chmod 600 ~/.ssh/authorized_keys

Testen Sie die Verbindung, indem Sie sich per SSH bei Ihrem eigenen Rechner anmelden:

ssh localhost "echo Hello from SSH"

Falls die Abfrage „Are you sure you want to continue connecting?“ erscheint, geben Sie yes ein und drücken Sie die Eingabetaste.

Die Ausgabe sollte sofort „Hello from SSH“ enthalten, ohne dass Sie nach einem Passwort gefragt werden. Damit ist sichergestellt, dass auch Ansible eine Verbindung ohne Passwort herstellen kann.

Eine Inventardatei erstellen

Ansible benötigt eine Liste der zu verwaltenden Server. Diese Liste wird Inventar genannt.

Das Inventar kann in einer einfachen Textdatei gespeichert werden. Erstellen Sie ein Projektverzeichnis und eine Inventardatei mit dem Namen hosts.ini.

Erstellen Sie eine leere Datei mit dem Namen hosts.ini:

touch hosts.ini

Ansible kennt derzeit noch keine Server. Im nächsten Schritt fügen Sie die Server hinzu.

Einen Host zum Inventar hinzufügen

Bearbeiten Sie nun die Datei hosts.ini, um Ihren Server hinzuzufügen. Ansible-Inventare verwenden häufig das INI-Format, das folgendermaßen aussieht:

[group_name]
server_address

Durch die Gruppierung von Servern, zum Beispiel in [webservers] oder [databases], können Sie Befehle gleichzeitig auf allen Servern eines bestimmten Typs ausführen.

Fügen Sie localhost zur Gruppe [webservers] hinzu. Schreiben Sie dazu mit diesem Befehl den Inhalt in die Datei:

echo -e "[webservers]\nlocalhost" > hosts.ini

Bedeutung des Befehls:

  • echo -e: Gibt Text aus und verarbeitet Sonderzeichen wie \n (Zeilenumbruch).
  • "[webservers]\nlocalhost": Der einzufügende Text. [webservers] steht in der ersten Zeile und localhost in der zweiten.
  • > hosts.ini: Überschreibt die Datei mit diesem Inhalt.

Überprüfen Sie den Dateiinhalt:

cat hosts.ini

Die Ausgabe sollte genau so aussehen:

[webservers]
localhost

Konnektivität testen

Jetzt kommt der entscheidende Moment: Bitten Sie Ansible, eine Verbindung zu allen Servern in Ihrem Inventar herzustellen und zu prüfen, ob sie erreichbar sind.

Verwenden Sie den Befehl ansible für einzelne Aufgaben zusammen mit dem ping-Modul.

Führen Sie diesen Befehl aus:

ansible all -m ping -i hosts.ini

Bedeutung des Befehls:

  • all: Wählt alle Hosts in Ihrem Inventar aus.
  • -m ping: Weist Ansible an, das Modul mit dem Namen ping zu verwenden.
    • Hinweis: Dieses Modul unterscheidet sich vom Netzwerkbefehl ping. Das Ansible-Modul ping meldet sich tatsächlich am Server an, prüft, ob Python verfügbar ist, und gibt „pong“ zurück. Damit wird bestätigt, dass Ihre Konfiguration funktioniert.
  • -i hosts.ini: Weist Ansible an, die gerade erstellte Inventardatei zu verwenden, statt des standardmäßigen Systeminventars.

Die Ausgabe sollte eine grüne Meldung mit „SUCCESS“ enthalten:

localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

Wenn Sie "ping": "pong" sehen, herzlichen Glückwunsch! Sie haben Ansible erfolgreich so konfiguriert, dass es Ihren Server verwalten kann.

Zusammenfassung

In diesem Lab haben Sie die Grundlage für die Automatisierung mit Ansible geschaffen. Sie haben gelernt:

  1. Installation: Ansible auf Ihrem System bereitzustellen.
  2. SSH-Schlüssel einrichten: Schlüssel zu erzeugen, damit sich Ansible sicher und ohne Passwort anmelden kann.
  3. Inventar: Eine Liste (hosts.ini) der zu verwaltenden Server zu erstellen.
  4. Konnektivität prüfen: Mit dem ping-Modul zu überprüfen, ob alles funktioniert.

Diese Schritte – Installation, Zugriff, Inventar und Test – führen Sie in jedem Ansible-Projekt zuerst aus, unabhängig davon, ob Sie einen Server oder tausend Server verwalten.