Migration lmn 6.2 –> lmn 7.2
Autor des Abschnitts: @jeffbeck, @Tobias, @cweikl (Voraussetzungen) @MachtDochNix (Review)
Es wird eine Migration der
Benutzerinformationen (Namen, Passwort, Projekte),
Computerinformationen (
workstations
),der Benutzerdaten (
/home
),Tausch- und Projektverzeichnisse und der
Geräte-Abbilder (
/var/linbo
) unterstützt.
Nicht migriert werden
Beschreibungen von Projekten,
Quota-Tabellen und
Rollen, die Geräte bekommen.
Diese müssen von Hand angepasst werden.
Ebenso werden die Dienste mrbs, openSchulPortfolio und der Mail-Server nicht migriert, da diese - wenn benötigt - zur Installation in einem Dockercontainer übernommen werden müssen.
Voraussetzungen
Bestehendes System
Es muss als Quellsystem linuxmuster.net in der Version 6.2 installiert sein.
Es ist möglich, dass auch ab Version 6.1 und 6.0 eine Migration funktioniert. Dies wurde nicht offiziell getestet.
Neues v7.2 System
Es wird davon ausgegangen, dass …
der Server der Version 7.2 und eine Firewall (Standard OPNSense® ) zur Verfügung stehen.
das Setup wie zuvor beschrieben ausgeführt wurde und ohne Fehler durchgelaufen ist.
nach der Installation keine zusätzlichen Benutzer, Gruppen und Projekte angelegt wurden.
In dieser Beschreibung wird als Schulinstanz, wie beim Erstsetup vorgegeben, default-school
beibehalten.
Achtung
Solltest Du in der linuxmuster.net v6.2 bereits Netzsegmente gebildet und/oder Netzbereiche geändert haben, dann beachte nachstehendes Unterkapitel mit Hinweisen zum korrekten Vorgehen.
Hinweis
Dieser Teil kommt aus der Dokumenation der Version 7, und dient der Übernahme. Die einzelnen Schritte können so übernommen werden, allerdings der Workflow und die Beschreibung der Kommando-Parameter sind zu überarbeiten.
System mit Netzanpassungen .. ————————–
Solltest Du in der linuxmuster.net v6.2 andere Netzbereiche konfiguriert haben, die jetzt weiter genutzt werden sollen, oder hast Du das Netz in Subnetze aufgeteilt und möchtest bei der Migration diese Subnetze mit umstellen, dann ist nachstehendes Vorgehen unbedingt bereits beim Erstsetup der VMs der v7.2 zu beachten.
Ablauf .. ——
VMs erstellen (Install-from-Scratch)
VMs starten
IPs der OPNsense® auf die bisher verwendeten IPs/Netze anpassen
ServerVM mit netplan die IPs so ändern, dass diese die korrekte IP im internen (grünen) Netz haben wie bisher
VMs vor dem Setup auf die neue Netzstruktur vorbereiten (Netzbereich anpassen)
Erreichbarkeit der VMs im internen Netz testen.
Update der VMs druchführen
Erstsetup durchführen (Setup v7.2)
IPs OPNsense® anpassen .. ———————-
Die IP der externen Schnittstelle (WAN) der OPNsense® ist ggf. anzupassen. Diese ist in der Erstauslieferung so konfiguriert, das diese eine IP via DHCP erhalten würde. Sollte die OPNsense® Firewall hinter einem Router arbeiten, so kann eine Anpassung für eine statische IP erforderlich sein.
Hierzu rufst Du auf der Konsole in der OPNsense®, nachdem Du Dich als root
angemeldet hast, den Punkt 2) Set interface IP address
auf. Solle eine DHCP-Konfiguration in Deinem Netz hier nicht möglich sein, wählst Du zunächst die WAN-Schnittstelle aus und trägst die IP Adresse aus Deinem lokalen Netz mit korrekter Subnetzmaske, Gateway und DNS ein.
Danach wählst Du die LAN-Schnittstelle aus und konfigurierst die bisherige IP, die im IPFire bereits genutzt wurde. Hast Du z.B. ein Subnetting für das Server-Netz in der v6.2 genutzt, das im „grünen“ Netz den Bereich 10.16.1.0/24 vorsieht, so vergibst Du hier auf der LAN-Schnittstelle der OPNsense® die IP 10.16.1.254/24 (Subnetmask 255.255.255.0 = 24 Bit).
Bei vorhandener Subnettierung dürfte für o.g. Besipiel der L3-Switch im Server - VLAN die IP 10.16.1.253 haben. Zudem ist darauf zu achten, dass auf der Virtualisierungsumgebung die korrekten Bridges für das jeweilige VLAN den Schnittstellen der VMs korrekt zugeordnet wurden.
VMs vorbereiten ..^^^^^^^^^^^^^^^
netplan ..“““““““
Die Server-VM muss nun vorbereitet werden.
In der Datei /etc/netplan/01-meine-netzconfig.yaml - Name bitte auf Dein System anpassen - sind die Netzwerkeinstellungen wie folgt zu ändern (Hinweis: nachstehende Angaben greifen o.g. Beispiel hier nur für die Server-VM auf):
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
dhcp6: no
addresses: [10.16.1.1/24]
gateway4: 10.16.1.254
nameservers:
addresses: [10.16.1.254, 10.16.1.1]
Danach speicherst Du die Änderungen und wendest diese mit folgendem Befehl an und testest, ob die Firewall im internen Netz erreichbar ist:
netplan apply
ping 10.16.1.254
Erhälst Du erfolgreich Pakete zurück, so kanst Du die Firewall erreichen.
Können alle VMs im internen Netz sich untereinander via ping erreichen, bereitest Du die VMs mit linuxmuster-prepare vor. siehe: Netzbereich anpassen
linuxmuster-prepare ..“““““““““““““““““““
Jetzt meldest Du Dich auf der Eingabekonsole an der Server-VM an.
Du bereitest diese VMs für der Erstsetup vor, indem Du die korrekten Angaben zur gewünschten IP der VM und der Firewall mit linuxmuster-prepare (siehe: Netzbereich anpassen) angibst.
Gehen wir davon aus, dass Du für die Server VM im vorangegangenen Schritt die IP 10.16.1.1/24 und für die OPNsense® als Firewall die IP 10.16.1.254/24 zugeordnet hast. Zudem nehmen wir an, dass Deine zukunftige Schuldomäne den Namen schuldomaene erhalten wird und Deine Domain meineschule.`de` lautet.
Mit diesen Vorgaben bereitest Du die Server-VM nun mit folgendem Befehl auf das Setup vor:
./lmn-appliance -s -u -d schuldomaene.meineschule.de -n 10.16.1.1/24 -f 10.16.1.254
Starte nach den Anpassungen die VM neu mit reboot
.
Tests & Setup ..“““““““““““““
Teste nun die Erreichbarkeit der VMs im internen Netz mit folgenden Befehlen (angepasst auf o.g. Bsp.):
ping 10.16.1.254
ping 10.16.1.1
Funktioniert dies korrekt, so kann jetzt die Aktualisierung der VM erfolgen.
Aktualisiere die VM mit folgendem Befehl:
apt update
apt dist-upgrade
Starte danach die VM neu.
Nach dem Neustart meldest Du Dich an der Server-VM als Benutzer root an und rufst das Setup mit folgendem Befehl auf:
linuxmuster-setup
Nach erfolgreichem Setup Setup v7.2 durchläuft Du die nachstehend dargestellten Schritte zur Migration.
Vorgehen zur Migration .. ======================
1. Zunächst installiert man auf dem Quellsystem (Version 6.x) das Paket sophomorix-dump und exportiert die Daten (ca. 15MByte).
2. Danach importiert man diese Daten auf einem Zielsystem (Version 7.x) und rekonstruiert dort Benutzer, Passwörter, Projekte und Geräte, etc.
3. Es müssen manuell die Verzeichnisse /home/share
, /home/teachers
und /home/students
im Zielsystem gemountet werden
(z.B. über eine externe Festplatte und bind-mount,
Netzwerk-mount, etc.) und importiert werden.
4. Die Daten von LINBO können ebenso wie Benutzerdaten synchronisiert werden.
Export der Daten unter linuxmuster.net 6.x .. ==========================================
Der Server 6.x muss sich in einem synchronisierten Zustand befinden,
d.h. der Befehl auf der Konsole sophomorix-check
darf keine
hinzuzufügenden oder zu verändernden Benutzer anzeigen.
Dafür führt man folgende Schritte als root nacheinander aus:
# sophomorix-check
...
# sophomorix-add
...
# sophomorix-move
...
# sophomorix-kill
...
Jetzt sollte ein sophomorix-check
keine Benutzer mehr verändern
wollen.
sophomorix-dump installieren .. —————————-
Installiere jetzt sophomorix-dump
aus dem babo-Repository oder
lade das entsprechende Debian-Paket von der Webseite herunter
server ~ # apt-get update
server ~ # apt-get install sophomorix-dump
...
sophomorix-dump (3.63.2-1) wird eingerichtet ...
Alternativ kannst Du (z.B. wenn Du das babo-Repository nicht einbinden kannst) unter http://pkg.linuxmuster.net/babo/ die neueste Version sophomorix-dump_u.v.w-z_all.deb herausfinden, herunterladen und installieren:
server ~ # wget http://pkg.linuxmuster.net/babo/sophomorix-dump_3.63.2-1_all.deb
server ~ # dpkg -i sophomorix-dump_3.63.2-1_all.deb
...
sophomorix-dump (3.63.2-1) wird eingerichtet ...
Daten exportieren .. —————–
Führe das Skript sophomorix-dump
aus
server ~ # sophomorix-dump
...
* Dump OK: /root/sophomorix-dump/data/etc/linuxmuster/subnets
########### End: Results of dump ##########
WARNINGs in Results of dump are OK:
/etc/sophomorix/virusscan/sophomorix-virusscan-excludes.conf
/etc/sophomorix/virusscan/sophomorix-virusscan.conf
/var/lib/sophomorix/virusscan/penalty.db
are only needed, if you had configured sophomorix for scanning viruses
Die Zusammenfassung zeigt Fehler und Warnungen an. Warnungen und der folgende Fehler:
ERROR dumping: /root/sophomorix-dump/data/etc/sophomorix/user/mail/*
können ignoriert werden.
Die exportierten Daten (bis zu 15MByte) liegen jetzt in
/root/sophomorix-dump
. Kopiere dieses Verzeichnis auf den Server
mit Version 7.x. Um die exportierten Daten wieder zu löschen, führe sophomorix-dump.. --clean
aus.
Import der Daten unter linuxmuster.net 7.x .. ==========================================
Installiere die sophomorix-vampire
-Skripte über
server ~ # apt update
server ~ # apt install sophomorix-vampire
...
Das Skript sophomorix-vampire -h
zeigt Optionen und Schritte an, die im folgenden durchgeführt werden.
Kompletter Import mit sophomorix-vampire-example .. ————————————————
Beispielhaft führt das Skript sophomorix-vampire-example
alle Schritte für eine typische Schule durch. Es empfiehlt sich das Skript in den übertragenen Ordner sophomorix-dump
zu kopieren und an die eigenen Bedürfnisse anzupassen. Besonders der Import der Nutzerdaten sollte in der folgenden Schritt-für-Schritt Anleitung genau geprüft werden.
1. Analyse der exportierten Daten .. ———————————
Die folgende Analyse zeigt
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --analyze
ERROR
:z.B. fehlende Dateien (
/etc/sophomorix/user/mail/*
wird dagegen nicht in jeder Installation verwendet)INFO
:z.B. Gruppen, die während der Migration umbenannt werden
WARNING
:z.B. Warnungen, welche Dateien überschrieben werden
2. Migration der Klassen .. ————————
Alle Klassen werden vor den Benutzern migriert, inklusive eventueller Umbenennungen der Klassennamen wie in der Analyse angezeigt. Dafür erstellt man zunächst das Klassenskript und führt es danach aus
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --create-class-script
server ~ # /root/sophomorix-vampire/sophomorix-vampire-classes.sh
Jetzt können die neu erstellten Klassen überprüft werden, beispielsweise
server ~ # sophomorix-class -i
server ~ # sophomorix-class -i.. --class teachers
3. Migration der Benutzer .. ————————-
Zunächst muss die Passwortlängen und -komplexitätsüberprüfung von Samba 4 so eingestellt werden, dass bisherige einfache Passwörter erlaubt sind.
server ~ # samba-tool domain passwordsettings set.. --complexity=off
server ~ # samba-tool domain passwordsettings set.. --min-pwd-length=1
Jetzt wird aus den exportierten Daten eine Datei sophomorix.add
erzeugt, die an die richtige Stelle im System kopiert werden muss, um
danach die Benutzer regulär aufzunehmen.
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --create-add-file
server ~ # cp /root/sophomorix-vampire/sophomorix.add /var/lib/sophomorix/check-result/sophomorix.add
Folgender Schritt informiert vorab mit ERRORS
und WARNINGS
über mögliche Fehlermeldungen bei der geplanten Aufnahme. Diese Fehler
sollten manuell in der Datei
/var/lib/sophomorix/check-result/sophomorix.add
korrigiert werden.
server ~ # sophomorix-add -i
...
WARNING:
ERROR:
...
Die Aufnahme der Benutzer wird ca. 1 Sekunde Zeit pro Benutzer in Anspruch nehmen, Zeit einen Tee zu trinken.
server ~ # sophomorix-add
...
Die Aufnahme
nimmt die Benutzer mit ihren Erstpasswörtern auf, dies kann mit
server ~ # sophomorix-passwd.. --test-firstpassword ...
getestet werden, was hier zu 100% funktionieren sollte. Im nächsten Schritt folgt der Import der aktuellen Passworthashes.
gibt den Benutzern zunächst keine Rechte für die WebUI/Schulkonsole. Dies folgt in einem späteren Schritt.
4. Passworthashes importieren .. —————————–
Die mit Hash codierten Passwörter werde mit folgendem Befehl importiert und sollte keine Fehler erzeugen
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --import-user-password-hashes
...
0 ERRORS:
Jetzt müssen die standardmäßig komplexen Passwörter wieder aktiviert werden
server ~ # samba-tool domain passwordsettings set.. --complexity=default
server ~ # samba-tool domain passwordsettings set.. --min-pwd-length=default
Tests .. ^^^^^
Jetzt sollten für Konten bei denen nicht mehr das Erstpasswort gilt, der folgende Test fehlschlagen. Für alle Konten mit Erstpasswörtern sollte er noch funktionieren.
server ~ # sophomorix-passwd.. --test-firstpassword
Zeige einen oder mehrere Benutzer an
server ~ # sophomorix-user -i
server ~ # sophomorix-user -i.. --user name
server ~ # sophomorix-user -i.. --user na*
5. Klassenadministratoren importieren .. ————————————-
Wie bisher
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --create-class-adminadd-script
server ~ # /root/sophomorix-vampire/sophomorix-vampire-classes-adminadd.sh
6. Projekte importieren .. ———————–
Im nachfolgenden Schritt werden alle Projekte importiert.
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --create-project-script
server ~ # /root/sophomorix-vampire/sophomorix-vampire-projects.sh
Tests .. ^^^^^
Zeige ein oder mehrere Projekte an
server ~ # sophomorix-project -i
server ~ # sophomorix-project -i -p name | p_name
server ~ # sophomorix-project -i -p p_na*
7. Konfigurationsdateien importieren .. ————————————
Mit folgendem Schritt werden wichtige Konfigurationsdateien verändert.
Das Skript muss zwei Mal ausgeführt werden.
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --restore-config-files
...
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --restore-config-files
Hinweis
Jetzt solltest Du noch die Datei school.conf
bearbeiten, denn das
wird nicht automatisch gemacht.
8. Updates diverser Einstellungen .. ———————————
Grundsätzlicher Durchlauf von sophomorix-check
muss funktionieren:
server ~ # sophomorix-check
Stelle sicher, dass keine weiteren Benutzer hinzugefügt werden müssen:
server ~ # sophomorix-add -i
Mit folgendem Schritt werden
Benutzernamen in UTF-8 konvertiert (ab jetzt sind Umlaute und Sonderzeichen in Namen möglich),
Zugriffsrechte in der Schulkonsole gesetzt
server ~ # sophomorix-update
Lösche die Benutzer, die nach Deinen Einstellungen in school.conf
fällig werden.
server ~ # sophomorix-kill
Tests .. ^^^^^
So kann man überprüfen, ob Sonderzeichen in students.csv
oder teachers.csv
in das System übernommen wurden:
server ~ # sophomorix-user -i -u <user_with_umlaut>
9. Rechner importieren .. ———————-
.. --dryrun ohne funktion
server ~ # linuxmuster-import-devices.. --dry-run
server ~ # linuxmuster-import-devices
Tests .. ^^^^^
Überprüfe, ob einzelne Rechner vorhanden sind:
server ~ # sophomorix-device -d firewall -i
server ~ # sophomorix-device -r no-pxe -i
Überprüfe ob die Namensauflösung funktioniert:
server ~ # sophomorix-device.. --dns-test
10. Überprüfung von Benutzern und Gruppen .. —————————————–
Benutzer und Gruppen können mit folgendem Skript getestet werden:
server ~ # sophomorix-vampire.. --datadir /path/to/dir/sophomorix-dump --verify-uidi
Fehler
Kommando liefert
Unknown option: verify-uid Command line:
You have made a mistake, when specifying options. See error message above.
… sophomorix-vampire is terminating
11. Synchronisiere Benutzerdaten .. ——————————–
Zunächst müssen über irgendein Verfahren die Verzeichnisse /home/share
, /home/teachers
und /home/students
vom Quellsystem im Zielsystem unter einem Pfad (hier im Beispiel: /mnt
) erscheinen.
/mnt/home/share
/mnt/home/students
/mnt/home/teachers
Der Pfad im Zielsystem wird über das Kommandozeilenargument --path-oldserver /mnt
an nachfolgende Skripte übergeben und erwartet dann die obige Ordnerstruktur unterhalb von /mnt
.
Für einzelne Schüler, Lehrer, Klassen und Projekte sollte man eine Synchronisation testen:
server ~ # sophomorix-vampire.. --rsync-student-home <studentname> --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-teacher-home <teachername> --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-class-share <classname> --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-project-share <projectname> --path-oldserver /mnt
Jetzt können alle Schüler, Lehrer, Klassen und Projekte in einem Schritt importiert werden
server ~ # sophomorix-vampire.. --rsync-all-student-homes --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-all-teacher-homes --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-all-class-shares --path-oldserver /mnt
server ~ # sophomorix-vampire.. --rsync-all-project-shares --path-oldserver /mnt
12. Synchronisiere LINBO-Daten .. ——————————
Alle Daten von LINBO können ebenso wie die Benutzerdaten aus dem früheren Verzeichnis /var/linbo
importiert werden.
/mnt/var/linbo
Auch hier wird beispielsweise der Inhalt von /var/linbo
in das Zielsystem nach /mnt
eingebunden. Das Skript erwartet dann die
obige Ordnerstruktur unterhalb von /mnt
.
server ~ # sophomorix-vampire.. --rsync-linbo --path-oldserver /mnt
Jetzt muss LINBO erneut installiert werden, um Änderungen, die nur unter linuxmuster.net v7 existieren, importiert werden
server ~ # apt-get.. --reinstall install linuxmuster-linbo7 linuxmuster-linbo-common7
13. Dinge, die manuell gemacht werden müssen .. ——————————————–
Beschreibungen zu Projekten hinzufügen
Die Rolle von Geräten festlegen
Quota für die Benutzer (neu) festlegen
Bei migrierten Subnetzen: Es muss in
/etc/linuxmuster/subnets.csv
das Gateway für das Servernetz eingetragen werden, z.B. 10.0.0.253 für einen L3-Switch. Danach musslinuxmuster-import-subnets
ausgeführt werden.