Backup des opsi-Servers

Erstellen Sie regelmäßige Backups des opsi-Servers. Grundsätzlich können Sie dabei die gleiche Strategie verfolgen wie beim Sichern anderer Linux-Systeme. Dieses Kapitel erklärt die opsi-spezifischen Aspekte.

Beim opsi-Backup geht es im Wesentlichen um diese Komponenten:

  • Sicherung der Dateien eines Depots

  • Sicherung der Redis-Datenbank

  • Sicherung der opsi-Datenbank

Sicherung der Dateien

Auf opsi-Depotservern sollten Sie die folgenden Verzeichnisse sichern:

  • /etc/opsi

  • /var/lib/opsi

  • /tftpboot/opsi bzw. /var/lib/tftpboot/opsi

opsiconfd backup (siehe Abschnitt opsiconfd backup/restore) sichert lediglich die Konfigurationsdateien aus /etc/opsi — um die anderen Verzeichnisse müssen Sie sich selbst kümmern.

Hier noch einige Anmerkungen zu den Daten im Verzeichnis /var/lib/opsi:

  • /var/lib/opsi/tmp: Enthält temporäre Dateien, die Sie nicht sichern müssen.

  • /var/lib/opsi/depot: Der Inhalt dieses Ordners lässt sich in vielen Fällen nicht komplett aus den opsi-Paketen wiederherstellen, denn hier liegen zusätzliche Dateien wie Custom-Files, Windows-Installationsdateien, WinPE und Treiber, die nicht in den opsi-Paketen enthalten sind.

  • /var/lib/opsi/repository: Dieses Verzeichnis dient als Zwischenspeicher für opsi-Pakete; Sie können es daher vom Backup ausschließen. Beim Wiederherstellen kann es dann passieren, dass Sie erneut größere Datenmengen übertragen müssen.

Sicherung der Redis-Datenbank

Redis ist eine In-Memory-Datenbank, die alle Daten im Arbeitsspeicher vorhält. Das macht die Datenbank zwar extrem schnell, aber auch anfällig für Datenverluste — etwa wenn der Strom ausfällt oder der Redis-Server-Prozess abrupt beendet wird.

In der Regel ist der Redis-Server daher so konfiguriert, dass die Daten in regelmäßigen Abständen auf die Festplatte geschrieben werden, um ihre Persistenz zu gewährleisten. Dies geschieht durch die Erstellung von sogenannten RDB-Snapshots. Dabei werden die Daten in bestimmten Zeitabständen auf die Festplatte geschrieben, um sicherzustellen, dass sie auch bei einem möglichen Serverausfall oder Neustart erhalten bleiben.

Beim Herunterfahren des Redis-Servers werden die Daten ebenfalls auf die Festplatte geschrieben, sodass sie beim erneuten Start von dort wieder geladen werden können. Dadurch geht keine Information verloren und der Redis-Server kann den Betrieb nahtlos fortsetzen.

Eine alternative oder ergänzende Methode ist das sogenannte AOF (Append Only File). Dabei werden alle Schreibvorgänge in eine Datei geschrieben, anstatt nur periodische Snapshots zu erstellen. Die Datei wird fortlaufend aktualisiert. Bei einem Neustart kann der Redis-Server Daten aus der AOF-Datei wiederherstellen.

Weitere Details zum Thema finden Sie in der Redis-Dokumentation, Kapitel Redis persistence.

Sie können Redis mit dem folgenden Kommando anweisen, einen Datenbank-Dump zu erzeugen:

redis-cli save

Auf opsi-Servern finden Sie den gespeicherten Datenbank-Dump in der Datei /var/lib/redis/dump.rdb, wie in der Konfigurationsdatei /etc/redis/redis.conf definiert (siehe Kapitel Redis).

Mit dem Befehl *redis-cli save* erzeugen Sie einen Dump der Redis-Datenbank.
Abbildung 1. Mit dem Befehl redis-cli save erzeugen Sie einen Dump der Redis-Datenbank.
Eigentlich ist das Sichern der Redis-Datenbank nicht notwendig, wenn Sie opsiconfd backup aufrufen (siehe nächster Abschnitt) — ein solcher Datenbank-Dump bietet aber zusätzliche Sicherheit.

Sicherung der opsi-Datenbank

opsi verwendet außerdem eine MySQL-/MariaDB-Datenbank (siehe Kapitel MySQL-Server). Diese können Sie mit dem Standardwerkzeug mysqldump sichern. Der Befehl erstellt einen Datenbank-Dump für MySQL- und MariaDB-Datenbanken und exportiert dann eine vollständige Datenbank (oder bestimmte Tabellen) in eine Datei, die Sie zur Wiederherstellung oder zum Import von Daten verwenden können.

Der folgende Befehl erzeugt einen Dump der Datenbank namens opsi, komprimiert ihn und speichert ihn in der Datei /var/backups/opsi.sql.bz2 ab:

mysqldump --single-transaction opsi | bzip2 > /var/backups/opsi.sql.bz2

Die Datei /var/backups/opsi.sql.bz2 können Sie anschließend von Hand sichern oder in Ihrer Backup-Strategie berücksichtigen.

Eigentlich ist das Sichern der MySQL-Datenbank nicht notwendig, wenn Sie opsiconfd backup aufrufen (siehe nächster Abschnitt) — ein solcher Datenbank-Dump bietet aber zusätzliche Sicherheit.

opsiconfd backup/restore

Der Dienst opsiconfd ist der zentrale Dienst auf jedem opsi-Server. Sein Kommandozeilen-Interface stellt unter anderem die beiden Befehle backup und restore bereit. Damit sichern Sie die opsi-Datenbank und die -Konfigurationsdateien und spielen ein Backup wieder ein.

Die opsi-Datenbank wird in diesem Fall objektbasiert gesichert, und es wird kein Datenbank-Dump erzeugt. Das erleichtert das Rückspielen des Backups in anderen Umgebungen — auch wenn andere MySQL-Versionen zum Einsatz kommen.

Eine Liste aller Parameter und deren Bedeutung erhalten Sie jeweils über --help:

opsiconfd backup --help
opsiconfd restore --help

Beim Erzeugen und Wiederherstellen des Backups wird der opsi-Configserver in der Voreinstellung in den Maintenance-Modus versetzt (siehe auch Abschnitt Maintenance). Damit ist sichergestellt, dass es während Backup und Restore keine Client-Aktivität gibt.

Der folgende Befehl erzeugt ein Backup im MessagePack-Format (msgpack) mit LZ4-Kompression:

opsiconfd backup --quiet --overwrite /var/backups/opsi-backup.msgpack.lz4

Die Backup-Datei können Sie auch mit AES (Advanced Encryption Standard) verschlüsseln. Dazu verwenden Sie den Parameter --password. Optional schreiben Sie das Kennwort direkt dahinter; lassen Sie es weg, geben Sie es auf Aufforderung ein (und es erscheint anschließend nicht in der Bash-History).

Ab opsi 4.3 können Sie opsi-Backups verschlüsseln und mit einem Passwort sichern.
Abbildung 2. Ab opsi 4.3 können Sie opsi-Backups verschlüsseln und mit einem Passwort sichern.

So stellen Sie das eben angelegte Backup wieder her:

opsiconfd restore /var/backups/opsi-backup.msgpack.lz4

Wenn Sie die Sicherungskopie verschlüsselt haben, geben Sie ebenfalls --password und dann auf Aufforderung das vorher gesetzte Kennwort ein.

Beim Wiederherstellen eines Backups werden standardmäßig weder Konfigurationsdateien noch Redis-Daten wiederhergestellt. Durch die Parameter --redis-data bzw. --config-files werden auch diese Daten wiederhergestellt.
Mit dem Parameter --server-id ändern Sie die ID des opsi-Configservers beim Wiederherstellen.

Backup über Admin-Seite

Alternativ zu den hier gezeigten Befehlen können Sie das Backup auch über die Admin-Seite des opsiconfd im Webbrowser erzeugen (siehe Abschnitt Maintenance). Über Checkboxen im Bereich Create backup definieren Sie, ob die Konfigurationsdateien berücksichtigt werden sollen, ob während des Backups der Maintenance-Modus aktiviert werden soll. Wenn Sie ins Feld Password ein Kennwort eingeben, aktivieren Sie die AES-Verschlüsselung. Nach einem Klick auf den Button Create backup landet die Sicherungskopie automatisch im Download-Verzeichnis des Webbrowsers. Der Dateiname setzt sich aus opsiconfd-backup, dem Datum und der Uhrzeit zusammen, z. B. opsiconfd-backup-20230628-162048.msgpack.lz4.

Zur Wiederherstellung wählen Sie im Bereich Restore Backup die gewünschte Sicherungskopie aus; der Button Durchsuchen öffnet einen Dateiauswahldialog. Auch hier gibt es Checkboxen, um die Konfigurationsdateien auszuschließen und die Server-ID anzupassen. Aktivieren Sie hier Other und tragen Sie ins Feld dahinter den FQDN des Servers ein, um die Sicherung auf einem anderen opsi-Configserver wiederherzustellen. Haben Sie das Backup verschlüsselt, geben Sie ins Feld Password das Kennwort ein. Abschließend klicken Sie auf Restore backup.

Auf dem Reiter _Maintenance_ der Admin-Seite können Sie auch Backups erzeugen und wiederherstellen.
Abbildung 3. Auf dem Reiter Maintenance der Admin-Seite können Sie auch Backups erzeugen und wiederherstellen.