Einleitung
Das manuelle Einrichten und Verwalten von Servern kann ein mühsamer und fehleranfälliger Prozess sein, insbesondere in Umgebungen mit mehreren Servern oder sich wiederholenden Konfigurationsaufgaben. Ansible, ein leistungsstarkes Open-Source-Tool zur IT-Automatisierung, vereinfacht diesen Prozess, indem Sie damit Serverbereitstellung, Konfiguration und Verwaltung problemlos automatisieren können. In diesem Leitfaden „24. Automatisieren der Ubuntu-Server-Einrichtung mit Ansible: Ein praktischer Leitfaden“ führen wir Sie durch die Grundlagen der Verwendung von Ansible zur Automatisierung der Einrichtung und Konfiguration von Ubuntu Server. Am Ende werden Sie lernen, wie Sie Ansible-Playbooks schreiben und ausführen, um gängige Serveraufgaben zu vereinfachen, die Effizienz zu verbessern und Konsistenz in Ihrer gesamten Infrastruktur sicherzustellen.
Frühere Artikel:
01. Einführung in Ubuntu Server – SysOSX: AI & Cloud
02. So richten Sie Ihren ersten Ubuntu-Server ein: Ein Leitfaden für Anfänger – SysOSX: AI & Cloud
03. Die Linux-Befehlszeile für Ubuntu Server beherrschen – SysOSX: AI & Cloud
05. Netzwerkgrundlagen für Ubuntu Server: Ein umfassender Leitfaden – SysOSX: AI & Cloud
07.Ubuntu Server patchen und aktualisieren: Ein umfassender Leitfaden – SysOSX: AI & Cloud
09. Prüfung und Protokollierung von Ubuntu-Servern
10. Systemüberwachungstools für Ubuntu Server: Ein umfassender Leitfaden – SysOSX: AI & Cloud
11. Zentrale Protokollierung für Ubuntu-Server: ein unverzichtbarer Leitfaden – SysOSX: AI & Cloud
12. Prüfung und Compliance für Ubuntu Server: bewährte Verfahren – SysOSX: AI & Cloud
14. Mehrere Websites auf einem einzigen Ubuntu-Server hosten: Nützliche Tipps – SysOSX: AI & Cloud
15. Speicher und Festplatten auf Ubuntu Server verwalten: Einfacher Leitfaden – SysOSX: AI & Cloud
17. Einrichten eines sicheren Datenbankservers unter Ubuntu: MySQL vs. MariaDB – SysOSX: AI & Cloud
21. Erste Schritte mit LXD: Container einfach installieren + Spickzettel – SysOSX: AI & Cloud
22. Erste Schritte mit Podman auf Ubuntu Server: Ein vollständiger Leitfaden – SysOSX: AI & Cloud
Inhaltsverzeichnis
Warum Ansible für die Serverautomatisierung verwenden?
Ansible wird wegen seiner Einfachheit und Leistungsfähigkeit häufig für die Serverautomatisierung eingesetzt. Hier erfahren Sie, warum es eine erste Wahl ist:
- Agentenlos: Ansible erfordert keine Agentensoftware auf den Zielservern. Es nutzt SSH für die Kommunikation.
- Deklarative Syntax: Ansible-Playbooks verwenden YAML, eine für Menschen lesbare Syntax, mit der sich gewünschte Zustände leicht definieren lassen.
- Wiederverwendbare Konfigurationen: Schreiben Sie Playbooks einmal und verwenden Sie sie auf mehreren Servern wieder.
- Idempotent: Ansible stellt sicher, dass Aufgaben nur bei Bedarf ausgeführt werden, und vermeidet so redundante Vorgänge.
- Erweiterbarkeit: Ansible unterstützt eine Vielzahl von Modulen für Aufgaben wie Paketinstallation, Dateiverwaltung und Dienstkonfiguration.
Voraussetzungen
Bevor wir uns mit der Automatisierung der Ubuntu-Server-Einrichtung mit Ansible befassen, stellen Sie sicher, dass Sie Folgendes haben:
- Control-Knoten: Ein Rechner (Ihr lokales System oder ein dedizierter Server), auf dem Ansible installiert ist.
- Zielserver: Ubuntu-Server (lokal oder in der Cloud), die Sie konfigurieren möchten.
- SSH-Zugriff: Stellen Sie sicher, dass passwortloser SSH-Zugriff zwischen dem Control-Knoten und den Zielservern eingerichtet ist.
Schritt 1: Ansible installieren
1.1 Ansible auf dem Control-Knoten installieren
Installieren Sie Ansible auf Ihrem Control-Knoten (z. B. Ihrem lokalen Rechner mit Ubuntu):
sudo apt update
sudo apt install ansible -y
1.2 Installation überprüfen
Überprüfen Sie die installierte Version von Ansible, um sicherzustellen, dass die Installation korrekt ist:
ansible --version
Beispielausgabe:
ansible 2.10.8
config file = None
configured module search path = ['/home/uadmin/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.10.12 (main, Feb 4 2025, 14:57:36) [GCC 11.4.0]
Schritt 2: SSH-Zugriff einrichten
Ansible kommuniziert über SSH mit den Zielservern. Sie müssen passwortlosen SSH-Zugriff vom Control-Knoten zu den Zielservern einrichten.
2.1 SSH-Schlüsselpaar erzeugen
Wenn Sie noch kein SSH-Schlüsselpaar haben, erzeugen Sie eines:
ssh-keygen -t rsa -b 2048
2.2 SSH-Schlüssel auf Zielserver kopieren
Verwenden Sie den folgenden Befehl, um Ihren öffentlichen Schlüssel auf den Zielserver/die Zielserver zu kopieren:
ssh-copy-id ubuntu@<target-server-ip>
Testen Sie den SSH-Zugriff, um sicherzustellen, dass er ohne Passwort funktioniert:
ssh ubuntu@<target-server-ip>
Schritt 3: Inventar definieren
Ansible verwendet eine Inventardatei um die zu verwaltenden Zielserver zu definieren.
3.1 Inventardatei erstellen
Erstellen Sie eine Datei mit dem Namen inventory in Ihrem Arbeitsverzeichnis:
nano inventory
Fügen Sie die IP-Adressen oder Hostnamen der Zielserver hinzu. Zum Beispiel:
[ubuntu_servers]
192.168.50.42
192.168.50.145
Speichern Sie die Datei und beenden Sie sie (Ctrl+O und dann Ctrl+X).
3.2 Konnektivität testen
Verwenden Sie das ping Modul, um die Konnektivität zu den Zielservern zu testen:
ansible -i inventory ubuntu_servers -m ping
Beispielausgabe:
192.168.50.145 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
192.168.50.42 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Schritt 4: Schreiben Sie Ihr erstes Ansible-Playbook
Ansible-Playbooks sind YAML-Dateien, die die Aufgaben definieren, die Sie automatisieren möchten. Lassen Sie uns ein Playbook erstellen, um die Einrichtung eines Ubuntu-Servers zu automatisieren.
4.1 Playbook-Datei erstellen
Erstellen Sie eine Datei mit dem Namen setup.yml:
nano setup.yml
4.2 Playbook definieren
Fügen Sie dem Playbook den folgenden Inhalt hinzu:
---
- name: Configure Ubuntu Server
hosts: ubuntu_servers
become: true
tasks:
- name: Update and upgrade apt packages
apt:
update_cache: yes
upgrade: dist
- name: Install common packages
apt:
name:
- curl
- wget
- git
- build-essential
state: present
- name: Enable UFW and allow SSH
ufw:
rule: allow
name: OpenSSH
state: enabled
- name: Create a new user
user:
name: devuser
password: "{{ 'password123' | password_hash('sha512') }}"
state: present
groups: sudo
Erläuterung der Aufgaben
- Pakete aktualisieren und upgraden: Stellt sicher, dass der Server über die neuesten Updates und Sicherheitspatches verfügt.
- Gängige Pakete installieren: Installiert wichtige Tools wie
curl,wgetundgit. - UFW aktivieren: Konfiguriert die Firewall so, dass SSH-Zugriff erlaubt ist.
- Neuen Benutzer erstellen: Fügt einen neuen Benutzer mit sudo-Rechten hinzu.
- Hostname festlegen: Konfiguriert den Hostnamen des Servers.
Speichern Sie die Datei und beenden Sie sie.
Schritt 5: Playbook ausführen
Führen Sie das Playbook aus, um die Konfigurationen anzuwenden:
ansible-playbook -i inventory setup.yml
Ansible protokolliert den Fortschritt jeder Aufgabe. Wenn alle Aufgaben erfolgreich abgeschlossen sind, ist Ihr Ubuntu-Server vollständig konfiguriert.
Ausgabe unten:
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
^X^C [ERROR]: User interrupted execution
uadmin@u2204-001:~$ sudo nano setup.yml
uadmin@u2204-001:~$ sudo ansible-playbook -i inventory setup.yml
PLAY [Configure Ubuntu Server] ***************************************************************************************
TASK [Gathering Facts] ***********************************************************************************************
ok: [192.168.50.145]
ok: [192.168.50.42]
TASK [Update and upgrade apt packages] *******************************************************************************
ok: [192.168.50.42]
ok: [192.168.50.145]
TASK [Install common packages] ***************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Enable UFW and allow SSH] **************************************************************************************
changed: [192.168.50.145]
changed: [192.168.50.42]
TASK [Create a new user] *********************************************************************************************
changed: [192.168.50.42]
changed: [192.168.50.145]
PLAY RECAP ***********************************************************************************************************
192.168.50.145 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.50.42 : ok=5 changed=3 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Schritt 6: Konfiguration überprüfen
6.1 Installierte Pakete prüfen
Melden Sie sich bei einem der Zielserver an und überprüfen Sie, ob die gängigen Pakete installiert wurden:
curl --version
git --version
6.2 Firewall-Status prüfen
Überprüfen Sie, ob die Firewall aktiviert ist:
sudo ufw status
6.3 Neuen Benutzer prüfen
Stellen Sie sicher, dass der neue Benutzer erstellt wurde:
cat /etc/passwd | grep devuser

Erweiterte Anwendungsfälle
Sobald Sie mit einfachen Playbooks vertraut sind, können Sie fortgeschrittenere Anwendungsfälle erkunden:
- Anwendungen bereitstellen: Verwenden Sie Ansible, um Webserver (z. B. Nginx, Apache) oder Datenbanken (z. B. MySQL, PostgreSQL) zu installieren und zu konfigurieren.
- Mehrere Umgebungen verwalten: Erstellen Sie separate Inventardateien für Staging-, Produktions- und Entwicklungsumgebungen.
- Rollen verwenden: Organisieren Sie Ihre Playbooks in wiederverwendbaren Rollen für komplexe Setups.
- Integration mit CI/CD: Automatisieren Sie die Servereinrichtung als Teil Ihrer CI/CD-Pipeline.
Referenz:
Ansible-Dokumentation — Dokumentation der Ansible-Community
Fazit
Ansible ist ein leistungsstarkes Tool zur Automatisierung der Servereinrichtung und -konfiguration. In diesem Leitfaden haben wir Folgendes behandelt:
- Ansible auf dem Control-Knoten installieren.
- SSH-Zugriff auf Zielserver einrichten.
- Ein einfaches Playbook schreiben und ausführen, um die Einrichtung von Ubuntu Server zu automatisieren.
Durch die Nutzung von Ansible können Sie Zeit sparen, Fehler reduzieren und Konsistenz in Ihrer gesamten Infrastruktur sicherstellen. Ob Sie einen einzelnen Server oder Hunderte verwalten – Ansible ist ein unverzichtbares Tool für moderne DevOps-Workflows.
2 thoughts on “24. Automating Ubuntu Server Setup with Ansible: A Practical Guide”