Zurück zum Blog

Automatisierung der Server-Einrichtung mit Ansible und Ubuntu 20.04

Automatisierung der Server-Einrichtung mit Ansible und Ubuntu 20.04

Einführung

Heutzutage müssen Server sehr häufig erstellt und gelöscht werden. Das liegt daran, dass Server zeitweise eine hohe Auslastung haben, während sich die Last zu anderen Zeiten verringert, was Systemressourcen verschwendet. Ein typisches Beispiel sind E-Commerce-Websites während der Feiertage, die viel Traffic anziehen. Wenn eine Anwendung skalierbar sein soll, besteht immer Bedarf an Konfigurationsmanagement-Tools, um den gesamten Prozess der Servererstellung zu vereinfachen. Ansible ist ein hervorragendes Konfigurationsmanagement-Tool, das die Servererstellung mithilfe von Standardverfahren automatisiert und so menschliche Fehler reduziert.

Ansible erfordert keine spezielle Software, die auf den Knoten der Server installiert werden muss. Es verfügt über alle notwendigen Tools, um Skripte zu schreiben, zu erstellen und deren Automatisierung zu erleichtern. Dieses Tutorial erläutert, wie Sie Ansible verwenden, um die Schritte aus unserem „So richten Sie Ihren Ubuntu-Server ein“-Tutorial zu automatisieren.

Voraussetzungen

Für diese Anleitung verwenden wir Ubuntu 20.04. Darüber hinaus benötigen Sie:

  • Einen Ansible-Steuerungsknoten: Eine Ubuntu-Maschine, auf der die neueste Ubuntu-Version läuft. Die Master-Binärdatei von Ansible muss auf dieser Maschine installiert sein und ausgeführt werden. Diese Maschine muss in der Lage sein, eine Verbindung zu den Ansible-Knoten herstellen. Für diese Verbindungen müssen Sie SSH-Schlüssel verwenden. Um Probleme beim Verbinden zu vermeiden, stellen Sie sicher, dass auf Ihrem Ansible-Steuerungsknoten eine Firewall aktiviert ist. Wenn Sie Hilfe benötigen, lesen Sie unseren „Installing and Configuring Ansible on Ubuntu 20.04“-Blog.

  • Ansible-Hosts: Es werden ein oder mehrere Hosts benötigt, zu denen eine Verbindung hergestellt werden kann. Die Hosts sind im Wesentlichen die verwalteten Knoten in Ansible. Dies müssen Ubuntu-Server sein.

Funktionen des Ansible-Playbooks

Sie können alle unten genannten Schritte manuell einrichten. Wir werden diese Ausführung jedoch automatisieren. Wenn Sie dieses Playbook ausführen, führt es die folgenden Operationen auf Ihrer Maschine aus:

  1. Es installiert aptitude, das von Ansible als Paketmanager bevorzugt wird.

  2. Es erstellt eine Administratorgruppe wheel mit passwortlosen sudo-Berechtigungen.

  3. Es erstellt einen neuen sudo-Benutzer.

  4. Es kopiert einen lokalen SSH-Schlüssel in die authorized_keys. Dieser wird für einen neuen Administrator-Benutzer auf einem Remote-Host verwendet.

  5. Es deaktiviert die passwortbasierte Authentifizierung für den root-Benutzer.

  6. Es installiert die erforderlichen Pakete.

  7. Es konfiguriert die UFW-Firewall, um nur SSH-Verbindungen zuzulassen. Alle anderen Verbindungen werden blockiert.

Sobald die Ausführung des Playbooks abgeschlossen ist, steht ein neuer Benutzer zur Verfügung. Sie können diesen Benutzer verwenden, um sich am System anzumelden.

Verwendung des Ansible-Playbooks

Um den Server einzurichten, benötigen Sie das Playbook für die Ersteinrichtung des Servers und dessen Abhängigkeiten. Wenn Sie es zum ersten Mal verwenden, müssen Sie das Repository über den folgenden Link klonen:

Wenn das Repository bereits auf Ihrem System vorhanden ist, führen Sie den folgenden Befehl aus, um die neuesten Updates zu erhalten:

Sie erhalten die folgende Dateistruktur auf Ihrer Maschine:

Nachfolgend finden Sie die Beschreibung der Dateien:

  • vars/default.yml: Diese Datei enthält die Variablen zur Konfiguration des Ansible-Knotens.

  • playbook.yml: Diese Datei enthält die Aufgaben, die auf dem Server ausgeführt werden sollen.

Die Datei vars/default.yml sieht ungefähr so aus:

Nachfolgend finden Sie die Beschreibung dieser Variablen. Wenn Sie diese bearbeiten möchten, können Sie deren Werte durch Ihre eigenen ersetzen:

  1. create_user: Dies ist der Benutzer, der erstellt wird. Dieser Benutzer hat sudo-Rechte.

  2. copy_local_key: Dies enthält den Pfad zum lokalen öffentlichen SSH-Schlüssel. Er wird auf den Remote-Server kopiert als authorized_key.

  3. sys_packages: Wenn Sie ein oder mehrere Pakete auf Ihrem Server installieren möchten, geben Sie diese hier als Array an.

Sobald Sie diese Datei bearbeitet haben, speichern Sie den Inhalt. Drücken Sie danach in nano STRG+X , Y. Dann, ENTER, um den Inhalt der Datei zu speichern.

Jetzt können Sie dieses Playbook auf mehreren Servern ausführen. Standardmäßig sind Playbooks bereit, auf den Servern in Ihrem Inventar ausgeführt zu werden. Wenn Sie das Playbook auf bestimmten Servern verwenden möchten, können Sie das Flag -l verwenden. Angenommen, der Remote-Server hat mehrere Benutzer, können Sie das Flag -u verwenden, um anzugeben, mit welchem Benutzer eine Verbindung hergestellt werden soll.

Wenn Ihr Servername my_server lautet und der Benutzername my_user ist, führen Sie den folgenden Befehl aus, um ihn auf den Ansible-Knoten auszuführen:

Sie erhalten eine Ausgabe wie diese:

Sobald diese Ausführung abgeschlossen ist, können Sie mit dem folgenden Befehl eine Verbindung herstellen:

Denken Sie daran, dass my_user der Name war, den wir in der Datei vars/default.yml verwendet haben. Sie müssen auch die Server-IP im obigen Befehl in die IP Ihres Servers ändern. Wenn Sie die Variable copy_local_key angegeben haben, um auf einen benutzerdefinierten SSH-Schlüssel zu verweisen, geben Sie den Speicherort mit dem Schalter -i an:

Melden Sie sich als Nächstes an Ihrem Server an, um die Regeln der UFW-Firewall zu überprüfen:

Sie erhalten die folgende Ausgabe:

Die obige Ausgabe bestätigt, dass die UFW-Firewall erfolgreich eingerichtet wurde. Dies war der letzte Schritt in unserem Playbook. Wenn dies korrekt ausgeführt wurde, bedeutet dies, dass die Ausführung erfolgreich war.

Der Inhalt des Ansible-Playbooks

Die in diesem Tutorial verwendeten Playbook-Dateien werden auf ansible-playbooks/setup_ubuntu1804 at master · do-community/ansible-playbooks · GitHub gehostet. Wenn Sie den Inhalt der einzelnen Dateien zur Verwendung oder Bearbeitung anzeigen möchten, klicken Sie auf die Schaltfläche Raw oben in jedem Skript.

Als Kurzübersicht teilen wir hier den vollständigen Inhalt des Playbooks zusammen mit den relevanten Dateien:

  • vars/default.yml

Diese Datei enthält die Werte, die von den Playbook-Aufgaben verwendet werden. Dazu gehören Werte wie der Name des Benutzers, Berechtigungen, SSH-Schlüssel, Pakete, die im Rahmen der Ersteinrichtung installiert werden sollen, und so weiter:

  • playbook.yml

Die playbook.yml-Datei enthält die auszuführenden Aufgaben. Zuerst listet die Datei alle Hosts auf, die als Ziel dienen sollen. Wenn Sie alle Server angeben möchten, setzen Sie den Wert dieses Schlüssels auf all. Wenn Sie als Nächstes die Aufgaben angeben möchten, die mit sudo-Berechtigungen ausgeführt werden sollen, setzen Sie den Wert der Variable become: true. Schließlich muss diese Datei den Inhalt der obigen vars/default.yml-Datei enthalten. Wir fügen diese als Nächstes ein, um die Einstellungen aus dieser Datei zu laden:

Fazit

Automatisierung ist der Schlüssel in der IT. Sie stellt sicher, dass alle Prozesse fehlerfrei ablaufen und Standardpraktiken und -verfahren befolgen. Da die meiste Software heute über das Web bereitgestellt wird und verteilter Natur ist, gehört das Erstellen neuer Server, z. B. für verschiedene Umgebungen wie Staging, Produktion oder sogar Demo-Umgebungen, mittlerweile zum Alltag.

In diesem Tutorial haben wir gezeigt, wie Sie die Automatisierung von Servern mit Ansible erreichen können – einem leistungsstarken und benutzerfreundlichen Tool, das Ihnen viel Zeit sparen kann.

Viel Spaß beim Computing!

author

Shreyas Patil

Autor · CloudSigma

Preslav Dobrev ist ein kreativer Designer bei CloudSigma und konzentriert sich auf eine konsistente Unternehmensidentität durch traditionelle und innovative Marketingkanäle. Er versteht es meisterhaft, künstlerische Vision mit strategischem Marketing zu verbinden, um wirkungsvolle Markengeschichten zu schaffen.

Kommentare

Noch keine Kommentare. Schreiben Sie den ersten.