Aufbau eines Playbooks zur Ausführung von Backups

In diesem Tutorial zeige ich dir, wie du mit Ansible ein Playbook erstellst, das regelmäßig Backups auf einem Remote-Server durchführt. Ansible ist ein großartiges Tool für die Automatisierung von Systemadministrationsaufgaben, und Backups gehören zu den zentralen Aufgaben, die automatisiert werden sollten.

Voraussetzungen

Bevor wir starten, stelle sicher, dass die folgenden Anforderungen erfüllt sind:

  • Ansible ist installiert: Du kannst Ansible einfach mit pip install ansible oder über dein Paketmanagementsystem installieren.
  • SSH-Zugang zu den Zielservern: Ansible verwendet SSH, um Befehle auf Remote-Hosts auszuführen.
  • Backup-Verzeichnis: Definiere das Verzeichnis, das du sichern möchtest (z.B. /var/www für eine Webanwendung).

1. Schritt: Ansible Inventory konfigurieren

Das Inventory ist eine Liste der Hosts, auf denen das Playbook ausgeführt werden soll. Du kannst eine Datei namens hosts in deinem Ansible-Projektordner anlegen:

[backup_servers]
backupserver.example.com ansible_user=root

Hier wird eine Host-Gruppe namens backup_servers definiert, die den Host backupserver.example.com enthält.

2. Schritt: Ansible Playbook erstellen

Das Herzstück jeder Ansible-Konfiguration ist das Playbook. Ein Playbook enthält eine Reihe von Aufgaben, die auf den Remote-Hosts ausgeführt werden sollen. In unserem Fall wollen wir ein Backup eines Verzeichnisses erstellen und es auf einem anderen Speicherort speichern.

Erstelle eine Datei namens backup_playbook.yml:

---
- hosts: backup_servers
  become: yes
  tasks:
    - name: Erstelle das Backup-Verzeichnis, falls es nicht existiert
      file:
        path: /backup
        state: directory
        mode: '0755'

    - name: Erstelle ein Backup des Verzeichnisses /var/www
      command: tar -czf /backup/www-backup-{{ ansible_date_time.date }}.tar.gz /var/www

    - name: Lösche alte Backups, älter als 7 Tage
      find:
        path: /backup
        age: 7d
        recurse: yes
        patterns: "*.tar.gz"
        state: absent

3. Schritt: Erläuterung des Playbooks

  • hosts: backup_servers: Gibt an, dass das Playbook auf der Gruppe von Servern mit dem Namen backup_servers ausgeführt wird.
  • become: yes: Ermöglicht, dass alle Aufgaben mit erhöhten Rechten (root) ausgeführt werden.
  • Aufgabe 1 – Verzeichnis erstellen: Falls das Backup-Verzeichnis /backup auf dem Server nicht existiert, wird es erstellt.
  • Aufgabe 2 – Backup erstellen: Es wird ein Tarball (.tar.gz) des Verzeichnisses /var/www erstellt. Der Dateiname enthält das aktuelle Datum (z.B. www-backup-2025-03-04.tar.gz).
  • Aufgabe 3 – Alte Backups löschen: Hiermit werden alte Backups, die älter als 7 Tage sind, automatisch gelöscht, um Speicherplatz zu sparen.

4. Schritt: Das Playbook ausführen

Um das Playbook auszuführen, verwendest du den Befehl:

ansible-playbook -i hosts backup_playbook.yml

Das Playbook wird nun auf den angegebenen Servern ausgeführt, das Backup erstellen und alte Backups entfernen.

5. Automatisierung mit Cron

Um sicherzustellen, dass das Backup regelmäßig durchgeführt wird, kannst du Ansible über einen Cron-Job automatisch ausführen lassen. Auf deinem lokalen Host oder einem Ansible-Controller-Server kannst du einen Cron-Eintrag erstellen, um das Playbook beispielsweise täglich um Mitternacht laufen zu lassen:

crontab -e

Füge diesen Eintrag hinzu:

0 0 * * * ansible-playbook -i /pfad/zu/deinem/projekt/hosts /pfad/zu/deinem/projekt/backup_playbook.yml

Fazit

Mit Ansible kannst du Backups auf einfache und automatisierte Weise einrichten. Durch die Kombination von Ansible und Cron stellst du sicher, dass deine Daten regelmäßig gesichert werden und du alte Backups automatisch löschen kannst. Diese Lösung ist leicht erweiterbar und anpassbar, falls du andere Verzeichnisse sichern oder komplexere Backup-Strategien implementieren möchtest.

Viel Erfolg beim Einrichten deiner Backup-Automatisierung!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert