Zum Inhalt

Detailiertes Update am Beispiel Ubuntu 22.04-LTS

Systemvorbereitung

Diese Anleitung geht davon aus, dass wir unser System entsprechend der Anleitung Detailierte Installation am Beispiel Ubuntu 22.04-LTS aufgesetzt und DETECT installiert haben.

Systemupdate

Um das System aktuell zu halten, benutzen wir unter Ubuntu den Paketmanager apt. Dazu aktualisieren wir zuerst die Paketquellen.

$ sudo apt update

Es werden jetzt die aktuellen Paketlisten heruntergeladen. Je nachdem wie oft Sie diese aktualisieren, kann dieser Vorgang länger dauern und viele Quelldateien umfassen. Es ist nicht nur aus Sicherheitsgründen wichtig, dieses Update regelmäßig durchzuführen. Ein Update über mehrere Versionen eines Programmes kann durchaus problematisch werden, wenn sich Konfigurationsdateien über die Versionen hinweg so sehr geändert haben, dass der Paketmanager diese nicht mehr migrieren kann. Sparen wir uns also den Stress und halten unser System aktuell.

Nachdem das Update die Quellen heruntergeladen hat, wird dieses in der Regel mit der folgenden Nachricht beendet:

...
Aktualisierung für 2 Pakete verfügbar. Führen Sie »apt list --upgradable« aus, um sie anzuzeigen.

Wir können uns diese Pakete mit dem angezeigten Befehl anzeigen lassen, oder direkt mit dem Update fortfahren:

$ apt upgrade

Je nachdem welche Pakete geupdated wurden, empfiehlt sich ein Neustart des Systems, um die aktualisierte Version zu laden, zum Beispiel nach einem Kernel-Update. Sollten nur einige Tools oder Bibliotheken aktualisiert worden sein, ist dieser nicht notwendig.

Sicherung aktuelle Daten

Es existiert leider kein Script oder Tool, mit welchem alle relevanten Teile der DETECT-Installation gesammelt gesichert werden können. Das bedeutet eine Sicherung muss manuell durchgeführt werden. Es ist aber auch nicht zwingend notwendig eine Sicherung der Daten vorzunehmen.

Im einfachsten Fall sichern wir uns die aktuelle Konfiguration der Stationen und des Mapping direkt über DETECT. Dort finden wir unter dem Punkt Administration den Abschnitt Backup.

backup_settings

Finden der DETECT-Daten im Betriebssystem

Da DETECT eine dockerisierte Anwendung ist, verteilen sich die Daten über das Docker-Verzeichnis /opt/docker-deploy/detect und die Docker-Volumes.

Mit dem Befehl:

$ docker volume ls

wird uns wahrscheinlich eine sehr lange Liste an Volumes angezeigt.

In der Datei /opt/docker-deploy/detect/docker-compose.yml finden wir unter dem Punkt 'volumes:' alle definierten Volumes für DETECT. Für eine Sicherung relevant sind wahrscheinlich die Volumes: - backend_data mit den Einstellungen der Applikation - keycloak_data mit den Daten für Keycloak für die Benutzerauthentifzierung

Den genauen Ort, wo Docker diese Daten ablegt finden wir mit:

$ docker volume inspect detect-vm_backend_data

[
    {
        "CreatedAt": "2023-08-10T13:09:30+02:00",
        "Driver": "local",
        "Labels": {
            "com.docker.compose.project": "detect-vm",
            "com.docker.compose.version": "2.20.2",
            "com.docker.compose.volume": "backend_data"
        },
        "Mountpoint": "/var/lib/docker/volumes/detect-vm_backend_data/_data",
        "Name": "detect-vm_backend_data",
        "Options": null,
        "Scope": "local"
    }
]

Es gilt zu beachten, dass das Service-Präfix mit angegeben werden muss, in diesem Fall detect-vm.

Es folgt eine Auflistung an Informationen über das Volume. Besonders interessant ist im Moment der Mountpoint. Dieser ist der physische Pfad auf der Maschine, an der die Daten liegen. Wichtig zu wissen ist ausserdem, dass Docker diese Daten immer dem Benutzer zuordnet.

$ sudo ls /var/lib/docker/volumes/detect-vm_backend_data/_data

archive  audit  database.db  excluded_case_cache.db  excluded_case_cache.db.settings  import  notified_case_cache.db  notified_case_cache.db.settings  redis.db  redis.db.settings  samba

Sicherung der DETECT-Daten im Betriebssystem

Mit den oben benannten Mitteln sind wir in der Lage sein, die relevanten Daten für Ihre DETECT-Installation zu finden.

Wir kopieren uns diese Daten in einen Sicherungsordner bzw. erstellen uns Archive, welche wir sichern können:

$ sudo mkdir /opt/detect-backup
$ cd /opt/detect-backup
$ sudo tar cfv detect-2.0.0.tar /opt/docker-deploy/detect
$ sudo tar cfv detect-backend.tar /var/lib/docker/volumes/detect-vm_backend_data/_data
$ sudo tar cfv detect-keycloak.tar /var/lib/docker/volumes/detect-vm_keycloak_data/_data

Download aktuelle DETECT-Version

Auf der Seite https://gitlab.ukdd.de/pub/detect/-/packages finden wir alle verfügbaren Versionen von DETECT. Es spricht in der Regel nichts dagegen, die aktuelle Version zu installieren.
Wenn wir auf der Homepage auf den Link 'detect-deployment.tar.gz' der Version klicken, die wir installieren möchten, werden wir auf die Seite mit dem Download weitergeleitet.
Dort kopieren wir den Link zur Datei 'detect-deployment.tar.gz' und verwenden diesen in dem Befehl

$ export detectURL=https://gitlab.ukdd.de/pub/detect/-/package_files/13968/download
$ echo $detectURL

Nun legen wir ein Verzeichnis detect_install mit der entsprechenden Versionsnumer an, laden unsere Datei herunter und entpacken diese

$ mkdir detect_install_2.2.0
$ cd detect_install_2.2.0
$ curl -L -o - $detectURL | tar xfvz -

Konfiguration DETECT

Das Verzeichnis sollte nun folgende Struktur haben:

$ ls
playbook.yml  readme.md  roles  sample-extra-variables.yml  sample-variables.yml

Um DETECT zu konfigurieren, benötigen wir die Datei variables.yml aus der bisherigen Installation. Dafür kopieren wir diese aus dem bisherigen Installationsverzeichnis:

$ cp ../detect_install_2.0.0/variables.yml variables.yml

Um Konflikte mit der bestehenden Version zu vermeiden, fahren wir diese herunter und verschieben den Installationsordner

$ cd /opt/docker-deploy/detect
$ docker compose down
$ cd ..
$ mv -r detect detect.bak

Ausrollen und Starten von DETECT

Ist die Konfigurationsdatei fertig angepasst, kann DETECT in der aktuellen Version ausgerollt und gestartet werden. Es gibt dazu auch Informationen in der readme.md Datei im Verzeichnis detect_install_v2.2.0.

Der Befehl

$ ansible-playbook playbook.yml -i localhost, --connection=local -e "@variables.yml" -v

erstellt die Konfigurationsdateien, lädt die benötigten Container-Images herunter und kopiert alle notwendigen Daten in das konfigurierte Verzeichnis, im Standardfall nach /opt/docker-deploy/detect.

Wir wechseln in das Verzeichnis und sollten folgende Struktur vorfinden:

$ cd /opt/docker-deploy/detect
$ ls
backend docker-compose.yml  frontend  keycloak  secrets  traefik

In den Ordnern liegen Konfigurationsdaten für die einzelnen Container, unter dem Ordner secrets liegen alle konfigurierten Benutzer und Passwörter. Diese können hier für den laufenden Betrieb geändert werden, sollten dann aber dringend in der Datei variables.yml korrigiert werden, um nach einem Update gleich zu bleiben. Andernfalls werden die Passwörter nach einem Update wieder auf den Stand der variables.yml zurückgesetzt.

Zur Prüfung der Installation kann mit den docker Befehlen überprüft werden, ob die Container laufen und in die Logs geschaut werden. Dazu empfehlen wir die Dokumentation von docker zu Rate zu ziehen, speziell zu den Optionen von docker logs und docker compose logs.

Testen der Installation

Zum testen der Installation und einrichten einer Beispielstation, eines Mapping und dem Import einer Testdatei folgen wir der Anleitung Einrichten und Testen der Applikation