geerlingguy.backup
Ansible Rolle: Backup für einfache Server
Sichere Linux-Server mit einer einfachen Lösung auf Basis von Rsync und Cron.
Anforderungen
Folgendes muss installiert sein:
- rsync
- cron
MySQL oder eine MySQL-kompatible Datenbank muss installiert sein, wenn du MySQL-Datenbank-Backups aktivieren möchtest.
Es wird auch angenommen, dass du einen Server hast, der Backup-Daten über Rsync empfangen kann. Auf diesem Backup-Server musst du rsync
installieren und Konten mit SSH-Authentifizierung einrichten, die es dieser Rolle ermöglichen, Backups in ein bestimmtes Verzeichnis über SSH zu übertragen.
Rollenvariablen
Verfügbare Variablen sind unten aufgeführt, zusammen mit Standardwerten (siehe defaults/main.yml
):
backup_cron_job_state: present
backup_hour: "3"
backup_minute: "00"
Steuert, ob das Backup-Skript über einen verwalteten Cron-Job aufgerufen wird. Du solltest die Backup-Zeiten zwischen Servern versetzen, damit dein Backup-Server nicht auf einmal mit zu vielen Daten überflutet wird.
backup_user: "{{ ansible_env.SUDO_USER | default(ansible_env.USER, true) | default(ansible_user_id, true) }}"
Benutzer, unter dem die Backup-Jobs ausgeführt werden.
backup_path: /home/{{ backup_user }}/backups
Pfad, wo die Backup-Konfiguration gespeichert wird. Im Allgemeinen solltest du ein spezielles Backup-Benutzerkonto verwenden, kannst aber auch das Konto wählen, das über die nötigen Zugriffsrechte auf die zu sichernden Verzeichnisse verfügt.
backup_directories:
- /home/{{ backup_user }}/domains
- /home/{{ backup_user }}/repositories
Verzeichnisse, die gesichert werden sollen. {{ backup_user }}
muss Lesezugriff auf diese Verzeichnisse haben. Jedes Verzeichnis wird über einen separaten rsync
-Befehl im Backup-Skript mit dem Backup-Server synchronisiert.
backup_exclude_items:
- .DS_Store
- cache
- tmp
Elemente, die von Sicherungen ausgeschlossen werden. Jedes Element wird als neue Zeile in einer Ausschlussdatei hinzugefügt, die vom Backup-rsync
-Befehl verwendet wird. Lies diesen Artikel für eine Erklärung, wie die --exclude
-Option funktioniert.
backup_identifier: id_here
backup_remote_connection: [email protected]
Optionen zur Steuerung, wo das Backup geliefert wird. Es wird angenommen, dass du Backups über SSH an einen Backup-Server leitest. Die Verwaltung der SSH-Schlüssel und -Authentifizierung sollte unabhängig von dieser Rolle erfolgen.
backup_remote_base_path: "~/backups"
Der vollständige Pfad auf dem Remote-Backup-Server, wo die Backups gespeichert werden (alle Backups für jeden Server befinden sich in einem Verzeichnis mit dem Namen des backup_identifier
).
backup_remote_host_name: ''
backup_remote_host_key: ''
Füge die Details zum Remote-Hostschlüssel hinzu, um sicherzustellen, dass der Hostschlüssel vorhanden ist und keine SSH-Verbindungsfehler aufgrund der Schlüssel-Authentifizierung auftreten. Leere Felder, wenn du die Überprüfung des Hostschlüssels deaktiviert hast oder wenn der Hostschlüssel bereits durch einen anderen Mechanismus zum Server hinzugefügt wurde.
backup_remote_connection_ssh_options: ''
Füge SSH-Verbindungsoptionen hinzu (z. B. -p [port]
), wie im SSH-Befehlshandbuch dokumentiert.
backup_mysql: false
backup_mysql_user: dbdump
backup_mysql_password: password
backup_mysql_credential_file: ''
Optionen zum Sichern von MySQL (oder MySQL-kompatiblen) Datenbanken. Beachte, dass der bei der Ausführung dieser Rolle verwendete ansible_ssh_user
MySQL-Benutzer hinzufügen können muss, damit diese Funktionalität von dieser Rolle verwaltet werden kann. Anstatt ein neues MySQL-Benutzerkonto zu erstellen, kannst du ein vorhandenes bereitstellen, indem du backup_mysql_credential_file
als Optionsdatei verwendest, wie im Benutzerleitfaden zur Passwortsicherheit dokumentiert.
Abhängigkeiten
Keine.
Beispiel-Playbook
- hosts: servers
vars:
backup_identifier: "{{ inventory_hostname|replace('.', '') }}"
backup_user: "backupuser"
backup_remote_connection: [email protected]
backup_hour: "1"
backup_minute: "15"
backup_mysql: false
backup_directories:
- /etc/myapp
- /var/myapp/data
- /home/myuser
roles:
- geerlingguy.backup
Lizenz
MIT / BSD
Autoreninformation
Diese Rolle wurde 2017 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps.
Backup for Simple Servers.
ansible-galaxy install geerlingguy.backup