Achtung ? bei jails

Mardor

Well-Known Member
Hallo,

gibt es etwas zu beachten, wenn man Jails nutzen will und updates über portsnap, portmaster und freebsd-update nutzt ?

Gruß Mardor
 
Ich benutze sysutils/ezjail für meine Jails. Damit brauche ich den Portbaum nur einmal in der Basejail. Mit den verschiedenen Optionen von ezjail-admin update lassen via portsnap (-P) und freebsd-update (-u) die Basejail (und somit alle abhängigen Jails) aktuell halten.
Mittels portmaster in jedem Jail können dann die installierten Ports/Packages aktualisiert werden, wobei auf den Portbaum aus der Basisjail zugegriffen wird.

Ich finde das ganze wirklich elegant gelöst.:)

mousaka
 
Zuletzt bearbeitet:
Ich nutze Jails manuell. freebsd-update(8) führe ich entsprechend in jedem Jail einzeln aus. Ports werden per nullfs aus einem zentralen Baum in die Jail gemountet, dort dann portupgrade genutzt. Wichtig ist nur, dass alle Jails die gleiche Version von Portupgrade haben.
 
Tipp zum Beschleunigen:
portupgrade -wW nutzen und nachdem alle Jails und der Host aktuell sind portsclean -C
Dadurch müssen einige Ports nur einmal übersetzt werden
 
Ich nutze Jails manuell. freebsd-update(8) führe ich entsprechend in jedem Jail einzeln aus.
Benutzen deine Jails keine gemeinsame Basejail?

Also alle Verzeichnisse wo freebsd-update was neues updaten würde, sind bei mir nur entsp. nullfs/ro in die Basjail. Und ein freebsd-update in einer Jail hätte so schon keine Berechtigung da was reinzuschreiben.

Die Ports sind bei mir auch nullfs/ro und nur im Hauptsystem mach ich da ein:
portsnap fetch update && portsdb -u

In den Jails mach ich dann wie gehabt jeweils z.B. "portupgrade -aP".

WRKDIRPREFIX / DISTDIR / PACKAGES halt noch in der make.conf jeweils angepasst.
 
ich hatte heute das erste mal eine Jail via ezjail erstellt. Irgendwie gewoehnungsbeduerfdig das ganze
 
ich hatte heute das erste mal eine Jail via ezjail erstellt. Irgendwie gewoehnungsbeduerfdig das ganze

Wieso?

Ich benutze immer ezjail...

...ich setze gerade meinen Homeserver neu auf.
Die Tage sind die Jails dran. Überlege gerade ob ich es mal ohne ezjail machen will?
Aber bisher lief alles so wie es soll....
 
Hat denn schon mal jemand eine mit ezjail erstellte jail binär upgegradet?
Also auf ne neue Version gebracht?

Komischerweise steht die option "ezjail-admin update -u" auch garnicht in der manpage.

Ein "ezjail-admin update -u -r 7.2-RC2" hat jedenfalls schon mal nicht geklappt.
Jetzt habe ich bedenken ob es denn klappt die jail binär auch auf 7.2-RELEASE zu bringen.
 
Wiedmann schrieb:
Benutzen deine Jails keine gemeinsame Basejail?
Das ist zu aufwändig und wie ich finde auch zu wackelig. Wenn man ein Basejail hat und das mit nullfs oder unionfs quermountet, hätte ich Angst durch einen einzogen Fehler >250 Jails zu zerschießen. Da Speicherplatz billig ist, ein Jail weniger als 500 Megabyte schluckt und man mit Perl und jexec(8) viel erreichen kann, lasse ich sie lieber einzeln :)
 
Yamagi schrieb:
Das ist zu aufwändig und wie ich finde auch zu wackelig.
Da siehst mal. Grad mit der gegenteiligen Begründung benutz ich 'ne Basejail ;-)
--> das build world für die Basejail ist ja das Selbe wie für's eigentliche System. Wenn es also in einer/der Jails nicht tun würde, würde davor schon das eigentliche System nicht korrekt funktionieren. Und ich verhindere so auch zuverlässig, das irgendjemand/etwas an seinem "Grundsystem" zerschießt. (ist ja hier ro die basejail).

Spart natürlich auch Zeit, weil's ja nur einmal gemacht werden muss. Ist wie mit den Packages. Da kommen hier auch viele (welche in den meisten Jails mit den selben Einstelungen benutzt werden) aus einer lokalen Jail/Tinderbox, die in PKG_SITES jeweils an erster Stelle steht.

Aber hat halt jeder seinen eigenen Ansatz. Und man hat ja die Freiheit es zu tun wie man will :-)
 
Hostsystem upzugraden hat ohne probleme geklappt.

Ich habe jetzt noch mal versucht die basejail upzugraden von 7.1 -> 7.2-RELEASE mit 'ezjail-admin -u'. Leider ohne erfolg.


Code:
No updates needed to update system to 7.2-RELEASE-p0  
No updates are available to install.
Run '/usr/sbin/freebsd-update fetch' first.

das wiederum würde ja nur updates für das hostsystem suchen.
Einzige möglichkeit die ich im moment sehe, ist mit 'ezjail-admin archive' die jail zu archivieren, mit 'ezjail-admin install' drüberzubügeln und hinterher die jail mit 'ezjail-admin restore' wieder einzuspielen.

irgendwelche weiteren/besseren vorschläge ? sonst werde ich das nacher so testen.
 
Warum baust Du nicht die Welt innerhalb der Jail neu?

Bin gespannt ob Dein Plan funktioniert.
 
naja, ich will ja gerade binär updaten, ist halt nur ein kleiner rechner (ehemaliger IGEL ThinClient) den ich umgebastelt habe.

Ist halt ein bisschen schwach auf der CPU :-)
Ausserdem Interessiert es mich ob es geht.
Updates für die basejail gehen ja auch, wiso sollen da keine Upgrades funktionieren?
 
Es scheint mittels ezjail tatsächlich keine binäres upgrade zu gehen ;'(
Wobei der die Unzulänglichkeit wohl bei freebsd-update zu suchen ist, da ezjail "nur" ein Shellskript ist, welches für binär updates freebsd-update einsetzt.

Darum habe ich mal direkt freebsd-update probiert, leider ohne Erfolg:
Folgendes Varianten funktionieren mir nicht
Code:
# freebsd-update -b /Pfad/zu/Jails fetch
# freebsd-update -b /Pfad/zu/Jails/basejail fetch
# freebsd-update -b /Pfad/zu/Jails -d /tmp fetch
# freebsd-update -b /Pfad/zu/Jails/basejail -d /tmp fetch
Mit dem Fehler "no need to update"

Gleiches gilt für "upgrade -r 7.2-RELEASE" anstelle von "fetch", wobei der Fehler dann "cannot upgrade from 7.2-RELEASE to itself" ist.

Weiss jemand wie freebsd-update dazu zu bewegen ist, ein Unterverzeichnis/Jail als update/upgrade Ziel zu verwenden?

mousaka
 
Weiss jemand wie freebsd-update dazu zu bewegen ist, ein Unterverzeichnis/Jail als update/upgrade Ziel zu verwenden?
Sofern freebsd-update die Info ob ein Update nötig ist oder nicht auch aus "/var/db/freebsd-update/" holt, sollte/könnte es langen, für die basejail hier mit "-d" ein anderes anzugeben.
 
Habe ich auch gedacht (siehe vorheriger post), hat aber leider nicht geklappt.:grumble:

Habe es auch mit einer angepassten /etc/freebsd-update.conf versucht, leider ohne Erfolg.

mousaka
 
Habe ich auch gedacht (siehe vorheriger post),
Oh, sorry. Ich hab da zwar die ganzen "-b" Parameter gesehen, aber die "-d" ganz übersehen...

Also in der ezmailing list hat mal einer geschrieben, dass er da eine "servicejail" nimmt (und nur dafür startet alles per kleines script), in der er die basejail rw mounted und darin dann freebsd-update ausführt.

Wobei der die Unzulänglichkeit wohl bei freebsd-update zu suchen is
Yup, denk ich auch. Das bietet dafür (noch) zu wenig Optionen.Die 2 Maintainer könnten sich ja mal "zusammensetzten".

Ansonsten hab ich bei FreeBSD Release-Wechsel das halt immer mit ezjail-admin update und dem installworld gemacht (und bisher problemlos ;-) ). So ein Release-Wechsel kommt ja auch nicht so oft vor.

Die sonstigen regulären Updates sind ja i.d.R eh nur "ein paar" Dateien, die man schon mal Hand in die Basejail kopieren kann. freebsd-update zeigt einem ja schön eine Liste an. Man könnte sich da natürlich auch ein Script machen, was dies automatisiert.
 
Nachdem ich den host upgegradet(7.1-RELEASE -> 7.2-RELEASE) hatte, war nun die basejail dran.

Ich habe nun einfach mit "ezjail-admin install -m" drüberinstalliert.

Anschließend zur sicherheit noch mal die md5 summen von ein paar binäries in der basejail und im Host verglichen, die dann auch erwartungsgemäß übereinstimmten.
Das ganze läuft jetzt schon 4 Tage ohne Probleme.
 
Ich nutze Jails manuell. freebsd-update(8) führe ich entsprechend in jedem Jail einzeln aus. Ports werden per nullfs aus einem zentralen Baum in die Jail gemountet, dort dann portupgrade genutzt. Wichtig ist nur, dass alle Jails die gleiche Version von Portupgrade haben.
Ich muss hier kurz mal fleddern. Wäre es unverschämt nach den erforderlichen Konfigurationsänderungen/-dateien zu fragen? Es geht mir insbesondere um die Einstellungen die man vornehmen muss, damit man /usr/ports per nullfsmount in die Jails bekommt UND dort Ports bauen kann.

Die Frage zielt darauf ab, da in /usr/ports ja übersetzt wird und ich vermute du /usr/ports readonly in die jails mountest.

Wäre sehr freundlich und eine gute Erweiterung fürs wiki (oder?).. :)
 
Servus,

das mit dem nullfs-Portstree ist eigentlich ganz einfach.
In jedem Jail muss die Datei /etc/make.conf existieren und folgenden Inhalt haben:

Code:
WRKDIRPREFIX=           /var/ports
DISTDIR=                /var/ports/distfiles
PACKAGES=               /var/ports/packages

Dabei kann man /var/ports auch irgendwo anders hin schieben.

Beste Grüße

Der Indy
 
Zurück
Oben