24. Automatisieren der Ubuntu-Server-Einrichtung mit Ansible: Ein praktischer Leitfaden

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

04. Benutzer und Berechtigungen auf Ubuntu Server verwalten: Ein umfassender Leitfaden – SysOSX: AI & Cloud

05. Netzwerkgrundlagen für Ubuntu Server: Ein umfassender Leitfaden – SysOSX: AI & Cloud

06. Software auf Ubuntu Server installieren und verwalten: Ein vollständiger Leitfaden – SysOSX: AI & Cloud

07.Ubuntu Server patchen und aktualisieren: Ein umfassender Leitfaden – SysOSX: AI & Cloud

08. Absichern Ihres Ubuntu-Servers: Praktische Schritte zur Härtung und zum Schutz – 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

13. Einrichten Ihres Ubuntu-Servers für Hosting und Webanwendungen: Der ultimative Leitfaden – 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

16. Einrichten von Dateifreigabediensten auf Ubuntu Server: Ein vollständiger Leitfaden – SysOSX: AI & Cloud

17. Einrichten eines sicheren Datenbankservers unter Ubuntu: MySQL vs. MariaDB – SysOSX: AI & Cloud

18. So konfigurieren und verwenden Sie LVM auf Ubuntu Server: Ein umfassender Leitfaden – SysOSX: AI & Cloud

19. Einführung in die Virtualisierung mit KVM: Ein Leitfaden für Anfänger für Ubuntu Server – SysOSX: AI & Cloud

20. So installieren Sie Docker auf Ubuntu Server: Eine Schritt-für-Schritt-Anleitung zur Containerisierung – 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

23. Bereitstellen von Ubuntu Server in der Cloud: Eine Schritt-für-Schritt-Anleitung – SysOSX: AI & Cloud



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:

  1. Control-Knoten: Ein Rechner (Ihr lokales System oder ein dedizierter Server), auf dem Ansible installiert ist.
  2. Zielserver: Ubuntu-Server (lokal oder in der Cloud), die Sie konfigurieren möchten.
  3. 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

  1. Pakete aktualisieren und upgraden: Stellt sicher, dass der Server über die neuesten Updates und Sicherheitspatches verfügt.
  2. Gängige Pakete installieren: Installiert wichtige Tools wie curl, wget und git.
  3. UFW aktivieren: Konfiguriert die Firewall so, dass SSH-Zugriff erlaubt ist.
  4. Neuen Benutzer erstellen: Fügt einen neuen Benutzer mit sudo-Rechten hinzu.
  5. 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”

Kommentar hinterlassen