geerlingguy.backup

Ansible Rolle: Backup für einfache Server

CI

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.

Installieren
ansible-galaxy install geerlingguy.backup
Lizenz
mit
Downloads
17k
Besitzer
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns