Konfigurationsmanagement mit Ansible auf Rocky Linux 9
Konfigurationsmanagementsysteme sind so konzipiert, dass sie Administratoren und Betriebsteams die Kontrolle über eine große Anzahl von Servern erleichtern. Sie ermöglichen die automatisierte Steuerung vieler verschiedener Systeme von einem zentralen Ort aus. Während es viele beliebte Konfigurationsmanagementsysteme für Linux gibt, wie Chef und Puppet, sind diese oft komplexer, als viele Anwender wünschen oder benötigen. Ansible ist eine großartige Alternative zu diesen Optionen, da es einen viel geringeren Aufwand für den Einstieg erfordert.
Einführung in Ansible
Ansible funktioniert, indem es Client-Maschinen von einem Computer aus konfiguriert, auf dem Ansible-Komponenten installiert und konfiguriert sind. Es kommuniziert über normale SSH-Kanäle, um Informationen von entfernten Maschinen abzurufen, Befehle auszuführen und Dateien zu kopieren. Dadurch benötigt ein Ansible-System keine zusätzliche Softwareinstallation auf den Client-Computern. Dies ist ein Weg, wie Ansible die Verwaltung von Servern erleichtert. Jeder Server, der einen SSH-Port freigegeben hat, kann unter das Ansible-Konfigurationsdach gebracht werden, unabhängig davon, in welchem Lebenszyklusstadium er sich befindet.
Ansible verfolgt einen modularen Ansatz, der es ermöglicht, die Funktionalitäten des Hauptsystems für spezifische Szenarien zu nutzen. Module können in jeder Sprache geschrieben werden und kommunizieren im Standard-JSON-Format. Konfigurationsdateien werden hauptsächlich im YAML-Datenserialisierungsformat geschrieben, da es ausdrucksstark ist und eine Ähnlichkeit mit populären Markup-Sprachen aufweist. Ansible kann über Befehlszeilentools oder seine Konfigurationsskripte, sogenannte Playbooks, mit Clients interagieren.
Installation und Konfiguration von Ansible
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
- Einen Ansible-Control-Node: Der Ansible-Control-Node ist die Maschine, die Sie verwenden, um über SSH eine Verbindung zu den Ansible-Hosts herzustellen und sie zu steuern. Ihr Control-Node kann entweder Ihre lokale Maschine oder ein dedizierter Server sein, der Ansible ausführt. In diesem Leitfaden wird davon ausgegangen, dass Ihr Control-Node ein Rocky Linux 9-System ist.
- Einen Nicht-Root-Benutzer mit sudo-Rechten.
- Ein SSH-Schlüsselpaar, das diesem Benutzer zugeordnet ist.
- Einen oder mehrere Ansible-Hosts: Ein Ansible-Host ist jede Maschine, die Ihr Ansible-Control-Node automatisieren soll.
Schritt 1 — Installation von Ansible
Um Ansible als Mittel zur Verwaltung Ihrer verschiedenen Server zu erkunden, müssen Sie zunächst die Ansible-Software auf mindestens einer Maschine installieren.
Um Ansible für Rocky Linux 9 zu erhalten, stellen Sie zunächst sicher, dass das Rocky Linux 9 EPEL-Repository mit dnf installiert ist:
sudo dnf install epel-release
Sobald das Repository installiert ist, installieren Sie Ansible:
sudo dnf install ansible
Nun haben Sie alle erforderliche Software, um Ihre Server über Ansible zu verwalten.
Schritt 2 — Konfiguration von Ansible-Hosts
Ansible führt eine Liste aller Server, die es kennt, über eine Hosts-Datei. Diese Datei müssen Sie zuerst einrichten, bevor Sie mit anderen Maschinen kommunizieren können.
Öffnen Sie die Datei mit Root-Rechten wie folgt:
sudo vi /etc/ansible/hosts
Sie werden feststellen, dass diese Datei viele Beispielkonfigurationen enthält, die auskommentiert sind. Lassen Sie diese Beispiele in der Datei, um Ansible-Konfigurationen für komplexere Szenarien später leichter zu lernen.
Die Hosts-Datei ist ziemlich flexibel und kann auf verschiedene Arten konfiguriert werden. Die Syntax, die Sie verwenden werden, sieht folgendermaßen aus:
Beispiel-Hosts-Datei
[group_name]
alias ansible_ssh_host=your_server_ip
Der group_name
ist ein organisatorisches Tag, das es Ihnen ermöglicht, alle unter ihm aufgelisteten Server mit einem Wort zu referenzieren. Der Alias ist ein Name, um diesen Server zu referenzieren.
Zum Beispiel: Stellen Sie sich vor, Sie haben drei Server, die Sie mit Ansible steuern möchten. Ansible kommuniziert mit Client-Computern über SSH, sodass jeder Server, den Sie verwalten möchten, vom Ansible-Server aus zugänglich sein muss. Wenn Sie die Option „Einen oder mehrere Ansible-Hosts“ in den Voraussetzungen befolgt haben, werden Ihre Hosts die SSH-Schlüssel eingerichtet haben und zugänglich sein, indem Sie den folgenden Befehl ausführen:
ssh root@your_server_ip
Sie werden nicht nach einem Passwort gefragt. Während Ansible sicherlich die Fähigkeit hat, passwortbasierte SSH-Authentifizierung zu handhaben, helfen SSH-Schlüssel, den Prozess zu vereinfachen.
Wenn Ihre Datei bereits geöffnet ist, verwenden Sie die folgenden IP-Adressen als Beispiel: 203.0.113.111, 203.0.113.112 und 203.0.113.113. Ersetzen Sie die IP-Adressen durch Ihre eigenen. Richten Sie dies so ein, dass Sie jeden Server individuell als host1, host2 und host3 oder als Gruppe namens „servers“ ansprechen können. Um dies zu konfigurieren, fügen Sie den folgenden Block zu Ihrer Hosts-Datei hinzu:
[servers]
host1 ansible_ssh_host=203.0.113.111
host2 ansible_ssh_host=203.0.113.112
host3 ansible_ssh_host=203.0.113.113
Wenn Sie den Block hinzugefügt haben, speichern und schließen Sie die Datei. Sie können dies tun, indem Sie :wq
schreiben und dann ENTER drücken.
Hosts können zu mehreren Gruppen gehören, und Gruppen können Parameter für alle ihre Mitglieder konfigurieren. Sie können dies ausprobieren, indem Sie den folgenden Befehl ausführen:
ansible -m ping host1
Ansible-Verbindungsfehler
Ansible versucht standardmäßig, über Ihren aktuellen Benutzernamen eine Verbindung zu Remote-Hosts herzustellen. Dieser Fehler zeigt, dass die Verbindung fehlschlägt, wenn der Benutzer nicht auf dem Remote-System existiert.
Teilen wir Ansible also explizit mit, dass es sich mit dem Benutzer „sammy“ mit den Servern in der Gruppe „servers“ verbinden soll. Beginnen Sie, indem Sie ein Verzeichnis in der Ansible-Konfigurationsstruktur namens group_vars
erstellen:
sudo mkdir /etc/ansible/group_vars
Innerhalb dieses Ordners können Sie YAML-formatierte Dateien für jede Gruppe erstellen, die Sie konfigurieren möchten. Zuvor haben Sie die Datei mit dem vi
-Texteditor bearbeitet. Alternativ können Sie die Datei mit nano
bearbeiten, müssen sie jedoch mit folgendem Befehl installieren:
sudo dnf -y install nano
Wenn Sie nano
bevorzugen, öffnen Sie nach der Installation die Datei /etc/ansible/group_vars/servers
, um die Konfiguration zu bearbeiten:
sudo nano /etc/ansible/group_vars/servers
Fügen Sie den folgenden Code in die Datei ein. YAML-Dateien beginnen mit ---
, also vergessen Sie diesen Teil nicht:
---
ansible_ssh_user: sammy
Wenn Sie fertig sind, speichern und schließen Sie die Datei. In nano
können Sie dies tun, indem Sie CTRL + X
drücken, dann Y
und ENTER.
Jetzt verwendet Ansible immer den Benutzer „sammy“ für die Gruppe „servers“, unabhängig vom aktuellen Benutzer.
Schritt 3 — Verwenden grundlegender Ansible-Befehle
Da Sie Ihre Hosts eingerichtet und genügend Konfigurationsdetails haben, um erfolgreich eine Verbindung zu Ihren Hosts herzustellen, können Sie einige Befehle ausprobieren.
Pingen Sie zunächst alle konfigurierten Server an. Der Teil -m ping
des Befehls ist eine Anweisung an Ansible, das Modul „ping“ zu verwenden. Dies sind allgemeine Befehle, die Sie auf Ihren Remote-Hosts ausführen können:
ansible -m ping all
Ansible gibt eine Ausgabe wie die folgende zurück:
host3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
host1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
host2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Damit haben Sie erfolgreich einige grundlegende Ansible-Befehle auf Ihren verschiedenen Hosts ausgeführt.
Fazit
Ihr Ansible-Server ist nun so konfiguriert, dass er mit den Servern kommunizieren kann, die Sie steuern möchten. Sie können überprüfen, ob Ansible mit jedem Host kommunizieren kann, indem Sie den Befehl ansible
verwenden, um grundlegende Aufgaben remote auszuführen.
Sie haben eine großartige Grundlage für die Arbeit mit Ihren Servern über Ansible geschaffen, also ist der nächste Schritt, zu lernen, wie Sie Playbooks verwenden, um die Schwerstarbeit für Sie zu erledigen.