opsi-backup

Einführung

Wie jedes andere System auch, sollte das opsi-System auch einem Backup unterzogen werden. Da opsi ein zentrales Werkzeug für das Windows-Client- wie auch das Windows-Server-Management darstellt, sollte der opsi-server gesichert werden. Dieses Handbuch soll einen Einblick in die Backup-Strategie von opsi geben und auch auf Themen, wie das zurückschreiben und das "DisasterRecovery" von opsi.

Vorbedingungen für ein Backup

Um ein Backup des opsi-Systems anzulegen, gibt es nicht wirklich eine Vorbedingung. Wenn man die zentralen Dateien und Backends des opsi-Systems lokalisiert hat, kann man diese auf diversen Methoden sichern. Die folgende Anleitung soll nicht nur die Frage: "Was soll gesichert werden?" beantworten, sondern auch einen Weg dokumentieren, wie eine Backupstrategie für das opsi-System aussehen könnte.

Das Backupskript sollte als root ausgeführt werden, entweder manuell oder einen root-cronjob, damit man die Konfiguration von opsi lesen kann und auch die Systemkonfiguration feststellen kann. Weiterhin sollte für ein Backup des mysql-Backends das mysqldump-Programm installiert sein, dieses findet sich in der Regel in den client-Paketen von mysql.

Quick Start

Backup erzeugen:

opsi-backup create opsi_backup.tar.bz2

Erzeugt ein Backup der aktuell genutzten Backends sowie der Konfigurationsdateien im aktuellen Verzeichnis mit dem Namen opsi_backup.tar.bz2.

Backend-Daten (ohne Konfigurationsdateien) zurückspielen:

opsi-backup restore opsi_backup.tar.bz2

Stellt die Daten aus dem Backupfile opsi_backup.tar.bz2 aus dem aktuellen Verzeichnis wieder her.

Komplettes Backup inklusive Konfigurationsdateien zurück spielen:

opsi-backup restore --backends=all --configuration opsi_backup.tar.bz2

Elementare Teile von opsi

Opsi kann man grob in fünf Teile gliedern. Die folgenden fünf Teile sind opsi spezifisch und können von System zu System, je nach Konfiguration variieren.

Opsi Konfiguration

Der mit Abstand wichtigste Teil von opsi, ist die Konfiguration. Getreu nach LSB (Linux Standard Base) befindet sich die Konfiguration von opsi unter /etc/opsi.

Dieses Verzeichnis beinhaltet hauptsächlich die Backend-Konfiguration, die Webservice-Konfiguration und das SSL-Zertifikat für den Webservice. Weiterhin sind hier Backend-Erweiterungen untergebracht, die Konfigurationen des opsipxeconfd, des opsi-package-updater mit seinen Repositories und auch die modules-Datei, die Ihnen Ihre kofinanzierten Module freischaltet.

Um später eine volle Wiederherstellung nach einem Unglück zu verwirklichen, muss das Verzeichnis /etc/opsi gesichert werden.

Dieser Bereich wird mit opsi-backup gesichert.

Die Sicherung hat daneben noch einen weiteren Vorteil:
Wenn man viele Konfigurationen von opsi geändert hat und das System nicht mehr richtig arbeitet, ist ein Rücksprung auf eine vorherige funktionierende Version meist leichter und schneller, als die Fehlersuche.

Opsi Backends

Im folgenden Kapitel werden die Backends von opsi aufgezählt. Diese bilden das Herzstück der opsi-Datenhaltung. Alle Clients, Produkte, Konfigurationen, Statis, etc…​ sind in der jeweiligen Datenhaltung abgelegt.

Opsi bietet folgende Datenbackends:

Tabelle 1. opsi-Backends
Backend Beschreibung

file-Backend

Backend auf Dateibasis, momentan der default bei opsi

mysql-Backend

MySQL-basiertes Backend (seit opsi 4.0)

dhcp

spezial Backend bei Verwendung von des dhcpd auf dem opsi-server

Wenn Sie nicht wissen, welches Backend sie einsetzen, setzen Sie wahrscheinlich das file-Backend ein. opsi ist aber auch dafür ausgelegt, mehrere Backends gleichzeitig einzusetzen. Welche Backends, für welche Funktionen von opsi eingesetzt werden, wird in der /etc/opsi/backendManager/dispatch.conf konfiguriert.

Dieser Bereich wird mit opsi-backup gesichert.

Opsi Depotfiles

Die Depotfiles sind deshalb interessant, da Sie die eigentlichen Dateien der zu verteilenden Software enthalten. Die Localboot-Produkte, wie auch die Netboot-Produkte haben Ihre Files jeweils unterhalb von /var/lib/opsi/depot. In früheren Versionen von opsi waren diese im Verzeichnis /opt/pcbin/install angesiedelt.

Je nachdem, wie viel Software auf dem opsi-server vorgehalten wird und wie viele Betriebssystem-Installationen inklusive Treibern vorgehalten werden, kann dieses Datenvolumen enorme Ausmaße annehmen.

Es gibt verschiedene Ansätze diese Dateien zu sichern. Die einfachste Alternative ist das rsnapshot. Es gibt aber elegantere Lösungen, wie das Verlegen dieser Daten in redundant ausgelegte Filesysteme auf einem SAN, etc.

Dieser Bereich wird mit opsi-backup nicht gesichert.

Opsi Workbench

Der Bereich opsi Workbench, welcher auch als gleichnamige Samba-Freigabe (opsi_workbench) in opsi eingesetzt wird, beinhaltet die Stände der eigenen Software-Paketierung. Das Verzeichnis ist standardmäßig unter /var/lib/opsi/workbench. Wenn dieser Share, wie vorgesehen dafür verwendet wird, um eigene Pakete in verschiedenen Revisionen dort vor zu halten, sollte dieses Verzeichnis auch gesichert werden.

Auch hier bietet sich das Tool rsnapshot an.

Dieser Bereich wird mit opsi-backup nicht gesichert.

Seit opsi 4.1 kann dieses Verzeichnis für jeden Depotserver einzeln konfiguriert werden, so dass abweichende Pfade möglich sind.
Vor opsi 4.1 war dieses Verzeichnis auf non-SLES-Systemen unter /home/opsiproducts zu finden.

Opsi Repository

Das Verzeichnis unter /var/lib/opsi/repository wird dazu verwendet, um opsi-Pakete zu puffern. Anders als die opsi Workbench, dient es aber nicht dem Paketieren von opsi Paketen, sondern die opsi Pakete welche dort abgelegt werden, sollen vorgehalten werden, um eventuell das Synchronisieren auf anderen Servern, oder das Synchronisieren mit dem opsi-package-updater zu vereinfachen.

Diese Dateien sind für ein vollständige Wiederherstellung nicht unbedingt nötig, können aber auch mit dem Tool rsnapshot gesichert werden.

Dieser Bereich wird mit opsi-backup nicht gesichert.

TFTP-Verzeichnis

Das TFTP-Verzeichnis beinhaltet Konfigurationsdateien für den Bootvorgang per PXE. Diese Verzeichnis befindet sich unter /tftpboot/ auf den meisten Systemen. Auf SLES ist dieses Verzeichnis /var/lib/tftpboot/opsi/.

Möglicherweise angepasste Dateien sind bspw. linux/pxelinux.cfg/default.menu bzw. linux/pxelinux.cfg/default.nomenu. Diese Dateien werden bei der Installation von opsi-linux-bootimage mit Defaultwerten angelegt. Für ein Disaster Recovery sind diese nicht zwingend nötig.

Dieser Bereich wird mit opsi-backup nicht gesichert.

Das opsi-backup Programm

Mit dem Kommandozeilenprogramm opsi-backup existiert ein Werkzeug, welches die Erstellung und das Wiederherstellen einfacher Backups komfortabel erledigt.

Dazu lässt sich opsi-backup mit drei grundlegenden Befehlen steuern: create, restore und verify.
Die Option --help gibt einen detaillierten Überblick über alle Optionen, die opsi-backup akzeptiert.
Ein mit opsi-backup erstelltes Backup ist ein Rohbackup, dass bedeutet, es werden keine Datein auf logischer Ebene gesichert, sondern es werden Sicherungen der in den Backends abgelegten Datein in den entsprechenden Strukturen angefertigt.
Ein solches Backup lässt sich daher auch nur für eine identische Backendkonfiguration zurückspielen.

Ein mit opsi-backup erstelltes Backup ist immer ein Vollbackup (opsi-backup unterstützt keine incrementellen oder differenziellen Backups).

Zu beachten ist, dass opsi-backup keine Sicherung der Depot Dateien, der Workbench Dateien sowie der Repository Dateien durchführt. Diese Datein sollten daher anderweitig gesichert werden.

Der mit opsi-backup erstellte backup file ist eine komprimierte tar Datei, deren Inhalt sich entsprechend auch anschauen lässt.

opsi-backup --help
Ein Backup, dass mit opsi-backup erstellt wird, kann unter anderem Passwörter und PC-Keys enthalten, und sollte daher entsprechend sicher archiviert werden.

Ein Backup anlegen

Das Anlegen eines neuen opsi Backups erfolgt mit dem Befehl opsi-backup create. Wird dieser Befehl ohne weitere Parameter angegeben erstellt das Programm ein Archiv mit allen Daten der Backends sowie der Konfiguration. Der Dateiname wird dabei automatisch generiert. Für den Befehl opsi-backup create sind zusätzliche Programmhilfen verfügbar, welche über die Option --help ausgegeben werden.

opsi-backup create
opsi-backup create --help

Es ist auch möglich, den Dateinamen oder das Zielverzeichnis des neuen Backups vorzugeben. Dazu wird einfach ein Dateiname oder ein Zielverzeichnis einfach an den entsprechenden Befehl angehängt. Wird ein Verzeichnis übergeben, generiert opsi-backup automatisch einen Dateinamen in diesem Verzeichnis. Ein durch opsi-backup generierter Dateiname hat die Form <hostname>_<opsi-version>_<datum>_<uhrzeit> und ist daher gut zur Archivierung meherere Backups geeignet. Wird ein Dateiname fest vorgegeben, so wird ein älteres Backup mit dem selben Namen durch opsi-backup überschrieben.

opsi-backup create /mnt/backup/opsi_backup.tar.bz2
opsi-backup create /mnt/backup/

Zusätzlich ermöglicht das create Kommando die Steuerung des Backups mittels der folgenden Optionen:

  • --backends {file,mysql,dhcp,all,auto}
    Ermöglicht die Auswahl der Backends, die in dem Backup eingeschlossen werden sollen. Diese Option kann mehrfach angegeben werden, um mehrere Backends anzugeben. Die Option --backends=all steht für alle Backends. Die Voreinstellung (default) für diese Optionen ist --backends=auto, was dafür sorgt, dass opsi-backup versucht, die verwendeten Backends anhand der Konfigurationsdatei /etc/opsi/backendManager/dispatch.conf zu ermitteln. Im Moment werden folgende Backends unterstützt: mysql, file, dhcp

    opsi-backup create --backends=file --backends=mysql
    opsi-backup create --backends=all
    Wenn Sie ein nicht unterstütztes Backend (wie z.B. ldap) verwenden, so können Sie vor dem Backup dieses mit dem Befehl opsi-convert in ein Backend konvertieren, dass sich per opsi-backup sichern lässt.
  • --no-configuration
    Schließt die Opsi Konfiguration aus dem Backup aus.

    opsi-backup create --no-configuration
  • -c [{gz,bz2,none}], --compression [{gz,bz2,none}]
    Spezifiziert die Kompressionsmethode, mit der das Archiv komprimiert werden soll. none steht hier für nicht komprimieren, die Standardkompression (default) ist bz2.

    opsi-backup create -c bz2
  • --flush-logs
    Die Sicherung des mysql-Backends erfolgt intern über einen 'mysqldump' Befehl. Das bedeutet, dass die Daten genauso gesichert werden, wie die Datenbank sie zu diesem Zeitpunkt sieht (unabhängig davon ob die Daten schon auf Platte stehen oder nur im Speicher). Somit ist das erstellte Backup evtl. aktueller und unterscheidet sich vom Stand der Datenbankdateien. Möchte man dies vermeiden, so müssen die von mysql im Speicher gehaltenen Daten vorher auf die Festplatte geschrieben werden. Ist die Option --flush-logs angegeben, wird opsi-backup versuchen, diese Operation durchzuführen (also die Daten aus dem Speicher auf die Platten zuschreiben). Allerdings benötigt der entsprechende Datenbankuser der opsi Datenbank dazu die entsprechende MySQL Berechtigung RELOAD. Standardmäßig wird der opsi Benutzer aber ohne dieses Recht angelegt! Besitzt er diese nicht (und die Option --flush-logs ist angegeben) wird das Backup fehlschlagen. Verwenden Sie daher diese Option nur, wenn Sie vorher die Rechte des Datenbankusers angepasst haben.

    opsi-backup create --backends=mysql --flush-logs

    Beispiel

opsi-backup create --no-configuration --backends=all opsi_backup.tar.bz2

Backups archivieren

Von Haus aus bringt opsi-backup keine Funktionen zum Archivieren von Backups mit. Der Administrator hat daher Sorge zu tragen, dass erzeugte Backups sicher und versioniert ablegt werden. Außerdem löscht opsi-backup niemals selbstständig ältere Backup Version (außer sie werden mittels create überschrieben). Da opsi-backup immer Vollbackups und keine inkrementellen Backups anlegt, kann es schnell zu großen Datenmengen kommen. Hier muss ebenfalls der Administrator Sorge tragen, dass ältere Backups wenn nötig regelmäßig gelöscht werden.

Ein Backup verifizieren

Mit dem Befehl opsi-backup verify kann das Archiv auf interne Integrität geprüft werden. Diese Prüfung ist keine logische Prüfung der Daten, es handelt sich um eine reine Prüfung auf die Korrektheit der im Archiv gespeicherten Daten. Für den Befehl opsi-backup verify sind zusätzliche Programmhilfen verfügbar, welche über die Option --help ausgegeben werden.

Beispiel

opsi-backup verify opsi_backup.tar.bz2
opsi-backup verify --help
Wird der Befehl opsi-backup verify explizit auf der Konsole aufgerufen ist es häufig sinnvoll, die opsi-backup Standardausgabe zu aktivieren: opsi-backup -v verify opsi_backup.tar.bz2

Inhalt eines Backups anzeigen

Mit dem Befehl opsi-backup list wird angezeigt welche Daten ein Backup enthält. Aufgelistet wird, ob Konfigurationsdaten vorhanden sind und Daten aus welchen Backends.

Beispiel

opsi-backup list opsi_backup.tar.bz2

Ein Backup wiederherstellen

Das Wiederherstellen des Archivs erfolgt mit dem Befehl opsi-backup restore. Dabei werden (per default) die Backends anhand der aktuellen Konfiguration eingespielt. Es kann also kein reines Backend Backup wiederhergestellt werden, ohne dass eine opsi Konfiguration vorhanden ist. Der Befehl opsi-backup restore braucht als Parameter das Backup Archiv, aus dem Daten wiederhergestellt werden. Für den Befehl opsi-backup restore sind zusätzliche Programmhilfen verfügbar, welche über die Option --help ausgegeben werden.

opsi-backup restore akzeptiert folgende Optionen:

  • --backends {file,mysql,dhcp,auto,all}
    Stellt das spezifizierte Backend wieder her. Diese Option kann mehrfach angegeben werden, um mehrere Backends anzugeben. Die Option --backends=all steht für alle Backends.
    Als Voreinstellung (default) wird die Option --backends=auto verwendet, was dazu führt, dass opsi-backup versucht, anhand der Konfigurationsdatei /etc/opsi/backendManager/dispatch.conf festzustellen, welche Backends wiederherzustellen sind.

    opsi-backup restore --backends=file --backends=mysql opsi_backup.tar.bz2
    opsi-backup restore --backends=all opsi_backup.tar.bz2
    Wenn Sie seit der Erstellung des Backups das Backend gewechselt haben, so wird die default Einstellung keine Daten zurück sichern.
  • --configuration
    Stellt die Opsi Konfiguration wieder her. Diese Option ist beim restore Vorgang kein default.

    opsi-backup restore --configuration opsi_backup.tar.bz2
  • --new-server-id=<new-name>
    Ändert den Namen des Opsi Config Servers nach dem Wiederherstellen des Backups. Sollte es einen Host mit der ID <new-name>, wird dieser entfernt.

    opsi-backup restore --new-server-id=test.example.org opsi_backup.tar.bz2
  • -f, --force
    opsi-backup führt vor dem Wiederherstellen eines Backups, eine Sicherheitsprüfung durch, um zu überprüfen, ob die aktuelle opsi Installation mit der Installation des Backups übereinstimmt (opsi Version, OS-Version, Host- und Domain Name). Mit dieser Option lässt sich diese Prüfung umgehen.

    opsi-backup restore -f opsi_backup.tar.bz2

    Beispiel

opsi-backup restore --configuration --backends=all opsi_backup.tar.bz2

Wird ein Backup auf einen Server zurückgespielt und es existiert kein Backup des Depot-Ordners, so gibt es die Möglichkeit mit opsi-package-updater und opsi-package-manager alle Pakete aus dem Repository erneut herunterzuladen und einzuspielen. Eventuell vorgenommene Änderungen im Depot müssen anschließend allerdings wieder durchgeführt werden.

opsi-package-updater download --force
opsi-package-manager --install /var/lib/opsi/repository/*.opsi