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 Namenbackup_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!