xilonz.trellis_backup

trellis-backup-role

Diese Rolle ist dafür gedacht, mit Trellis verwendet zu werden.

Sie ermöglicht die Einrichtung automatisierter Backups mit duply.

Sie wird:

  • duplicity und duply installieren
  • für jede konfigurierte wordpress_site zwei duply-Profile installieren
    • eines für die Datenbank
    • eines für die Uploads

Es sichert nicht den Code der Webseite. Wenn du eine Wiederherstellung benötigst, musst du zuerst deine Webseite auf einem neuen Server bereitstellen und dann deine Datenbank und Uploads wiederherstellen.

Erste Schritte

Füge die Rolle und ihre Abhängigkeiten zur galaxy.yml-Datei von Trellis hinzu:

- name: backup
  src: xilonz.trellis_backup
  version: 2.1.7

Führe ansible-galaxy install -r galaxy.yml aus, um die neuen Rollen zu installieren.

Füge dann die Rollen zur server.yml hinzu:

roles:
  ... andere Trellis-Rollen ...
  - { role: backup, tags: [backup] }

Rollen-Variablen

Die Rolle liest aus dem wordpress_sites-Dictionary in Trellis.

Beispiel:

wordpress_sites:
  example.com:
    site_hosts:
      - canonical: example.com
        redirects:
          - www.example.com
    local_path: ../site # Pfad zum lokalen Bedrock-Verzeichnis (relativ zum Ansible-Stammverzeichnis)
    repo: [email protected]:example/example.com.git # ersetze mit deiner Git-Repo-URL
    repo_subtree_path: site # relativer Pfad zu deinem Bedrock/WP-Verzeichnis in deinem Repo
    branch: master
    multisite:
      enabled: false
    ssl:
      enabled: false
      provider: letsencrypt
    cache:
      enabled: false
+   backup:
+     enabled: true
+     auto: true
+     target: scp://[email protected]/example.com_backups # jeder von duplicity unterstützte Ort
+     schedule: '0 4 * * *' # cron-Zeit für Backups (ändere diesen Wert)
+     purge: false # auf true setzen, um die automatische Löschung alter Backups zu aktivieren
+     max_age: 1M # Zeitraum für alte Backups, die behalten werden sollen, wird für den "purge"-Befehl verwendet.
+     full_max_age: 1M # erzwingt ein vollständiges Backup, wenn das letzte vollständige Backup dieses Alter erreicht.
+     max_full_backups: 1 # Anzahl der vollständigen Backups, die behalten werden sollen
+     post_actions: # optional
+     - "curl -L http://your-custom-endpoint" # Befehle, die nach Abschluss des Backups ausgeführt werden sollen

Du kannst enabled: true und auto: false setzen, um die duply-Profile zu installieren, aber keine Backups zu planen. So kannst du beispielsweise deine Produktionsdatenbank auf Staging wiederherstellen. Du hast die gleichen duply-Profile in Staging und Produktion, aber nur der Produktionsserver erstellt tatsächlich die Backups.

Lese alle duplicity-URL-Formate (und mögliche Ziele).

vault.yml

Füge deine Backup-Zielanmeldeinformationen zu vault.yml hinzu (abhängig von deinem Ziel können das S3-Schlüssel, FTP-Anmeldeinformationen oder nichts sein, wenn du lokal sicherst...). Du kannst auch deine Anmeldeinformationen in die Ziel-URL einbetten, aber die Verwendung der vault.yml-Methode ist sicherer.

example.com:
  env:
    backup_target_user: user
    backup_target_pass: password

Bereitstellung des Servers

Führe trellis provision --tags backup environment oder ansible-playbook server.yml -e env=environment --tags backup aus, um diese Rolle auszuführen.

Wiederherstellung

Sobald die Profile installiert sind, kannst du einfach von dem Server aus Backups erstellen und wiederherstellen. website_name ist der Name deiner Webseite in wordpress_sites.yml, wobei Punkte durch Unterstriche ersetzt werden (example_com). Du kannst ls /etc/duply verwenden, wenn du dir über den Namen deiner duply-Profile nicht sicher bist.

sudo duply website_name_database restore
sudo duply website_name_uploads restore

Änderungen in 2.0

  • Die Abhängigkeit zu paramiko wurde entfernt.
  • Du musst die Rolle Stouts.backup nicht mehr im server.yml-Playbook auflisten, da sie in den Aufgaben importiert wird.
  • Du benötigst eine aktuelle Version von Trellis, da die Rolle das Mysql auth_socket-Plugin verwendet, um eine Verbindung zur Datenbank herzustellen.

Bekannte Probleme mit SCP-Unterstützung

Um das SCP-Ziel zu verwenden, musst du paramiko auf deinem Server installiert haben.

Die automatische Installation von paramiko wurde in Version 2.0 entfernt. Wenn du es benötigst, solltest du es manuell installieren oder es zu den Trellis-Aufgaben hinzufügen. Es gibt jedoch ein bekanntes Problem, bei dem paramiko bei der SendEnv-Einstellung in der von Trellis erstellten ssh_config abstürzt.

S3-Unterstützung

Es gibt ein bekanntes Problem beim Hochladen in S3-Buckets, die nur V4-Signaturen akzeptieren. Um erfolgreich hochzuladen, musst du ein wenig zu dem backup:-Schlüssel deiner wordpress_sites.yml hinzufügen:

wordpress_sites:
  example.com:
    backup:
      ...
+     params:
+       - 'export S3_USE_SIGV4="True"'

Lizenz

MIT

Autoren

Diese Rolle wurde hauptsächlich von Jill Royer entwickelt und wird derzeit von Arjan Steenbergen gewartet.

Diese Rolle erfordert die Ansible-Backup-Rolle von La France insoumise. Diese sollte automatisch von Ansible installiert werden.

Über das Projekt

Install automated backups on Trellis using duply

Installieren
ansible-galaxy install xilonz.trellis_backup
Lizenz
Unknown
Downloads
2.2k