Wenn Sie ein Systemadministrator sind, ist es wichtig, dass Sie eine konsistente Methode zur Verwaltung aller von Ihnen verwendeten Server und Computer haben. Konfigurationsmanagementsysteme können diesen Prozess in hohem Maße rationalisieren. Sie verwalten alle Systeme effizient von einem zentralen Ort aus.
Unter Linux stehen mehrere Konfigurationsmanagementsysteme zur Verfügung. Zum Beispiel Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, usw. Während Tools wie Puppet und Chef tendenziell komplexer und fortschrittlicher sind, bietet Ansible Einfachheit und Benutzerfreundlichkeit. Sie müssen keine zusätzliche Client-Software auf den Nodes installieren, damit Ansible funktioniert. Stattdessen verwendet Ansible SSH, um Systeme zu verwalten und zu automatisieren. Ansible ist Open-Source-Software. Es ist außerdem hochgradig skalierbar, konsistent und zuverlässig.
Diese Anleitung zeigt, wie man Ansible installiert und konfiguriert auf Ubuntu 20.04.
Ansible auf Ubuntu
Ansible kann drei Arten von Automatisierung durchführen:
-
Bereitstellung: Es kann verschiedene Server entsprechend den Anforderungen der Infrastruktur einrichten.
-
Konfigurationsmanagement: Es kann verschiedene Konfigurationsänderungen an Servern vornehmen. Zum Beispiel das Starten und Stoppen von Diensten, das Installieren von Anwendungen und Updates, das Implementieren von Sicherheitsrichtlinien usw.
-
Anwendungsbereitstellung: Es erleichtert DevOps durch die automatisierte Bereitstellung intern entwickelter Anwendungen auf dem Produktivsystem.
Ansible kann in fast jeder IT-Umgebung – seien es gehostete oder traditionelle Server, Virtualisierungsplattformen oder in der Cloud – perfekt funktionieren. Es unterstützt auch die Verwaltung verschiedener Systeme wie Datenbanken, Netzwerke, Firewalls, Speichergeräte und viele andere. CloudSigma unterstützt auch Ansible für unsere Cloud-Infrastruktur.
Voraussetzungen
Für diese Anleitung benötigen wir ein paar Maschinen:
-
Control-Node: Der Control-Node ist der zentrale Knoten, der sich mit allen Host-Nodes verbindet, Aufgaben erteilt und verschiedene Aspekte des Systems verwaltet. Der Control-Node kann alles sein – ein lokaler Rechner oder ein Remote-Server.
-
Host-Node: Ansible-Hosts sind die Maschinen, die der Ansible-Control-Node automatisieren kann.
Wie der Titel der Anleitung vermuten lässt, sollten alle diese Maschinen mit Ubuntu 20.04 und den neuesten Paketen konfiguriert sein. Hier ist eine Kurzanleitung zur Einrichtung eines Ubuntu-Servers. Da Ansible SSH verwendet, um sich mit Maschinen zu verbinden, müssen alle Host-Nodes ordnungsgemäß mit SSH-Schlüsseln für den Control-Node eingerichtet sein. Stellen Sie sicher, dass bei allen Host-Nodes der öffentliche SSH-Schlüssel des Control-Nodes in die Datei authentication_keys eingetragen ist. Folgen Sie unserem Tutorial, um zu erfahren, wie Sie SSH-Schlüssel generieren und zu Linux-Servern hinzufügen.
Schritt 1: Installation von Ansible
Im Fall von Ubuntu ist keine zusätzliche Paket- oder Repository-Konfiguration erforderlich. Ansible ist direkt über die offiziellen Ubuntu-Paketserver verfügbar. Das Durchführen von Änderungen auf Systemebene erfordert administrativen Zugriff – den Root-Benutzer oder einen Nicht-Root-Benutzer mit sudo-Rechten. Die sudoers-Datei verwaltet die sudo-Berechtigungen für Benutzer und Gruppen.
Zuerst installieren wir Ansible auf dem Computer, der als Control-Node dienen soll. Um Ansible auf dem Control-Node zu installieren, führen Sie die folgenden Befehle aus:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Wenn Sie ein Passwort als SSH-Authentifizierungsmechanismus verwenden möchten, müssen Sie das Paket sshpass installiert haben:
|
1 |
sudo apt install sshpass |

Schritt 2: Konfigurieren der Inventory-Datei
In Ansible enthält die Inventory-Datei Informationen über alle hosts, die Ansible verwalten wird. Es können Dutzende oder Hunderte von Servern sein, die in der Inventory-Datei registriert sind. Die Server können auch in Gruppen und Untergruppen unterteilt werden. Generell wird die Inventory-Datei verwendet, um Variablen festzulegen, die nur für die spezifischen hosts oder Gruppen gültig sind. Dies ist eine nützliche Technik beim Schreiben von Playbooks und Templates. Bestimmte Variablen können auch beeinflussen, wie ein Playbook ausgeführt wird.
Ansible wird mit einer Standard-Inventory-Datei geliefert. Öffnen Sie die Datei zunächst in einem Texteditor:
|
1 |
sudo vim /etc/ansible/hosts |

Standardmäßig enthält die Inventory-Datei verschiedene Beispiele als Referenz. Hier ist ein Beispiel mit einer Gruppe namens servers, die drei verschiedene Server enthält. Die Variable ansible_python_interpreter definiert den Python-Interpreter für alle hosts, die im Inventory enthalten sind. Mit der Direktive ansible_user, können wir das Benutzerkonto deklarieren, mit dem sich Ansible verbindet:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Speichern Sie als Nächstes die Datei und schließen Sie den Editor. Um das Inventory zu überprüfen, führen Sie den folgenden Befehl aus:
|
1 |
ansible-inventory --list -y |
Die Ausgabe sollte in etwa so aussehen:

Schritt 3: Verbindungstest
Nach dem Konfigurieren der Inventory-Datei müssen wir testen, ob sich Ansible über SSH mit diesen Servern verbinden kann. Wir können dies tun, indem wir einfach alle Host-Knoten anpingen. Vom Control-Knoten aus pingen Sie alle Host- Knoten an:
|
1 |
ansible all -m ping |
Das Ping-Modul überprüft die folgenden Dinge:
-
Erreichbarkeit des Hosts
-
Gültigkeit der SSH-Anmeldedaten
-
Hosts können Ansible-Module mit Python ausführen
Die Ausgabe sollte in etwa so aussehen:

Wenn die Antwort von einem bestimmten Knoten pong lautet, bedeutet dies, dass der Knoten bereit ist, Ansible-Befehle und Playbooks auf dem Server auszuführen.
Schritt 4: Ausführen von Ad-hoc-Befehlen
Dies ist ein optionaler Schritt. Er kann jedoch nützlich sein, um die volle Funktionalität von Ansible auf den Remote-Servern zu überprüfen. Dieser Abschnitt kann auch als grundlegende Einführung in die weitere Nutzung und Konfiguration von Ansible dienen. Sobald wir die Konnektivität zu den Knoten bestätigt haben, können wir mit der Ausführung von Ad-hoc-Befehlen und Playbooks beginnen. Jeder Befehl, den Sie normalerweise auf den Remote-Servern ausführen würden, kann mit Ansible auf allen Servern ausgeführt werden.
Führen Sie hier den folgenden Befehl aus. Er überprüft die Festplattenbelegung auf allen Knoten gleichzeitig:
|
1 |
ansible all -a "df -h" |

Wir können auch verschiedene Ansible-Module über die Ad-hoc-Befehlsfunktion ausführen, genau wie wir das ping-Modul zum Testen ausgeführt haben. Zum Beispiel arbeitet das apt-Modul mit dem APT-Paketmanager unter Ubuntu. Es kann Pakete auf einem Remote-Ubuntu-Knoten verwalten. Beachten Sie, dass Root-Rechte erforderlich sind, um Änderungen auf Systemebene vorzunehmen. Der Remote-Knoten muss den Root-Login zulassen oder der Benutzer muss die Berechtigung zur Ausführung administrativer Aufgaben haben.
Im folgenden Beispiel installiert Ansible Nginx auf allen Host-Knoten:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Wie wäre es, Befehle nur auf einem einzelnen Server auszuführen? Wir verwenden den Server-Spitznamen (der in der Inventory-Datei zugewiesen wurde), um den Server zu spezifizieren:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Wir können auch mehrere Server angeben. Deklarieren Sie jeden Zielserver-Spitznamen mit einem Doppelpunkt als Trennzeichen:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Fazit
In dieser Anleitung haben wir Ihnen Schritt für Schritt gezeigt, wie Sie Ansible installieren und eine Inventory-Datei konfigurieren, um Ad-hoc-Befehle vom Ansible-Control-Node auszuführen. Einmal konfiguriert, kann der Control-Node jeden Befehl oder jedes Playbook ausführen, das Sie auf den Hosts ausführen möchten.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.