Univention Bugzilla – Bug 28972
Image Update beim lokalen Boot
Last modified: 2013-03-26 09:14:14 CET
Wenn ein Image lokal installiert ist und der Client von der lokalen Festplatte bootet wird das Image derzeit nicht aktualisiert. Dazu muss entweder das Verfahren aus TCS zurückportiert werden oder der UCC prüft in der initrd ein Policy Result.
Aktuelle Überlegung ist, dass wir in das vorhandene Image wechseln und dort die LDAP Suche ausführen.
Der Ablauf wäre dann wie folgt: - Der UCC Client startet lokal in die initrd. - Der UCC Client sucht sein lokales root Image und bindet dieses ein. - Das Netzwerk muss konfiguriert werden. Es gäbe die Möglichkeit dies im chroot durchzuführen, das ist allerdings relativ aufwendig, da upstart usw. gestartet werden muss. - Im chroot wird ein Programm ausgeführt, welches die LDAP Abfragen durchführt. Das Resultat ist ein temporäres Programm, welches aus der initrd ausgeführt werden kann. Ein temporäres Programm deshalb, weil so der Code an einer Stelle ist und das Parsen der Ausgabe in der initrd nicht notwendig ist. - Es sollte eine Methode geben dem UCC Client auch eine statische IP Konfiguration zu geben. Das sollte entsprechend berücksichtigt werden. Bei der Netzwerkkonfiguration könnten einfach die UCR Variablen geprüft werden.
Eine erste Version ist jetzt umgesetzt: (In reply to comment #2) > Der Ablauf wäre dann wie folgt: > > - Der UCC Client startet lokal in die initrd. > > - Der UCC Client sucht sein lokales root Image und bindet dieses ein. > > - Das Netzwerk muss konfiguriert werden. Es gäbe die Möglichkeit dies im chroot > durchzuführen, das ist allerdings relativ aufwendig, da upstart usw. gestartet > werden muss. Hier werden jetzt die UCR Variablen im Image geprüft und ausgelesen und das Netzwerk wird entsprechend gestartet. > - Im chroot wird ein Programm ausgeführt, welches die LDAP Abfragen durchführt. > Das Resultat ist ein temporäres Programm, welches aus der initrd ausgeführt > werden kann. Ein temporäres Programm deshalb, weil so der Code an einer Stelle > ist und das Parsen der Ausgabe in der initrd nicht notwendig ist. Hier wird das Tool /usr/share/univention-ucc-initramfs/scripts/generate_upgrade_script aufgerufen, welches die LDAP Daten ausliest und ein Helper Skript generiert und von der initrd aufgerufen werden kann. > - Es sollte eine Methode geben dem UCC Client auch eine statische IP > Konfiguration zu geben. Das sollte entsprechend berücksichtigt werden. Bei der > Netzwerkkonfiguration könnten einfach die UCR Variablen geprüft werden. Ja, das wird gemacht. Es fehlen noch: - Tests - Fehlerbehandlungen
In meinen Tests hat es soweit funktioniert.
Update an sich klappt, jedoch bekommt man (ohne Anpassung von Konfig-Files auf dem lokal installiertem System) keine aktualisierbares System. Wenn ich den TC installiere und Join wird den UCC Startmode auf None gesetzt. Wenn man nun von lokal bootet, wird weiterhin die "ucc=none" Bootvariante aus der lokalen grub.cfg verwendet. Auch wenn ich im ldap für den Rechner ucc=update setzte, kommt er an diese Info ja (falls lokal gebootet) nicht mehr ran.
Es fehlt derzeit der Mount von /boot im Image. Wenn das eingebunden ist, dann funktioniert es. Dennoch ist das Verhalten dann nicht konsequent, da es derzeit zwei Konfigurationsstellen gibt, zum einem im LDAP auf dem Tab des Rechners und zum anderen per UCR.
(In reply to comment #6) > Es fehlt derzeit der Mount von /boot im Image. Wenn das eingebunden ist, dann > funktioniert es. > > Dennoch ist das Verhalten dann nicht konsequent, da es derzeit zwei > Konfigurationsstellen gibt, zum einem im LDAP auf dem Tab des Rechners und zum > anderen per UCR. /boot sollte auf jeden Fall eingebunden werden. Zusätzlich werden wir jetzt die UCR Variablen ignorieren und im LDAP prüfen, was für den Client eingestellt ist.
Ich bin mit gerade nicht sicher, ob das System wirklich richtig aktualisiert wird. Folgendes Problem: * TC installiert, gejoint, auf Update Konfiguriert * TC ausgeschaltet und auf Festplatte boot gewechselt. * Image auf dem Server angepasst (/opt/test erstellt) * TC gestaret, das Update wurde eingspielt, jedoch ist das nun gestartete System noch das alte, /opt/test fehlt * Neustart des TC, dann hat man das neue Image, jedoch fehlen die persistent-files (z.B. ist /etc/machine.secret) nicht vorhanden
(In reply to comment #8) > Ich bin mit gerade nicht sicher, ob das System wirklich richtig aktualisiert > wird. Folgendes Problem: > > * TC installiert, gejoint, auf Update Konfiguriert > * TC ausgeschaltet und auf Festplatte boot gewechselt. > * Image auf dem Server angepasst (/opt/test erstellt) > * TC gestaret, das Update wurde eingspielt, jedoch ist das nun gestartete > System > noch das alte, /opt/test fehlt > * Neustart des TC, dann hat man das neue Image, jedoch fehlen die > persistent-files > (z.B. ist /etc/machine.secret) nicht vorhanden Das passiert auch, wenn über PXE ein Update eingespielt wird.
(In reply to comment #8) > Ich bin mit gerade nicht sicher, ob das System wirklich richtig aktualisiert > wird. Folgendes Problem: > > * TC installiert, gejoint, auf Update Konfiguriert > * TC ausgeschaltet und auf Festplatte boot gewechselt. > * Image auf dem Server angepasst (/opt/test erstellt) > * TC gestaret, das Update wurde eingspielt, jedoch ist das nun gestartete > System > noch das alte, /opt/test fehlt > * Neustart des TC, dann hat man das neue Image, jedoch fehlen die > persistent-files > (z.B. ist /etc/machine.secret) nicht vorhanden Zum einen wurde beim umount in der initrd nicht -d verwendet: -d In case the unmounted device was a loop device, also free this loop device Das führte dazu, dass teilweise das Image nicht richtig aktualisiert wurde. Weiter gab es diverse Probleme mit univention-ucc-sync-persistent-files, u.a. Bug #29936 und Bug #29934.
OK, update funktioniert über Netz und beim Boot über die lokale Platte. Ein kleiner Rechtschreibfehler hat sich noch in initramfs-tools/scripts/ucc eingeschlichen. Dort steht mehrfacj "harddsik".
(In reply to comment #11) > Ein kleiner Rechtschreibfehler hat sich noch in initramfs-tools/scripts/ucc > eingeschlichen. Dort steht mehrfacj "harddsik". Wurde angepasst.
(In reply to comment #12) > (In reply to comment #11) > > Ein kleiner Rechtschreibfehler hat sich noch in initramfs-tools/scripts/ucc > > eingeschlichen. Dort steht mehrfacj "harddsik". > > Wurde angepasst. OK
UCC 1.0 has been released: http://forum.univention.de/viewtopic.php?f=26&t=2417 http://forum.univention.de/viewtopic.php?f=54&t=2418 If this error occurs again, please use "Clone This Bug".