ezjail und die ports für alle jails teilen

rakso

Well-Known Member
hallo!

habe mit ezjails ein paar jails installiert und mit dem nullfs-mounten von den host-ports in die jails kann ich dort auch prima die ports nutzen. nun ist es aber so, dass ich in allen jails viele gleiche ports installieren würde. portfix, links, mysql-client, etc pp, von den vielen kleinen und großen abhängigkeiten und libs ganz zu schweigen. diese redundanzen will ich vermeiden. auf meinem anderen server habe ich das ganze host /usr in die jails gemountet, da musste ich also alles nur einmal, im host, installieren.


ich würde mich ja noch anfreunden können, jetzt manches zweimal zu installieren, aber nicht in jeder jail.

wie kann man ports in basejail installieren, die dann in allen jails verfügbar sind?

so klappts jedenfalls nicht
Code:
chroot /usr/jails/basejail/
%cd /usr/ports/
%cd www/
%cd links
%make install
cannot create /dev/null: No such file or directory
cd /usr/ports/www/links && make config;
cannot create /dev/null: No such file or directory
cannot create /dev/null: No such file or directory
===> Cannot create , check permissions
*** Error code 1

Stop in /usr/ports/www/links.
*** Error code 1

Stop in /usr/ports/www/links.


gruß und schönes WE
rakso
 
Code:
cannot create /dev/null: No such file or directory

Das ist eine gute Idee! Im Prinzip scheint dir nur das devfs zu fehlen. Probier mal vor dem chroot ein mount -t devfs none /usr/jails/basejail/dev abzusetzen. Würde mich auch interessieren, so könnte man ein paar "Standard-Ports" vorinstallieren die gleich für alle Jails da sind.

Fehlt dann nur, dass man die installierten Ports auch noch in der pkg Datenbank für alle (ez)Jails einträgt, damit dort nix durcheinandergerät (sonst will er ja Abhängigkeiten, die evtl. schon installiert sind nochmal installieren, weil er in der Jail nicht weiß, dass das schon installiert ist). Leider hab ich im Moment gar keine Zeit mir das genauer anzuschauen. Vielleicht hast du Zeit und vielleicht ist sogar der ezJails-Autor an Patches interessiert und hilft bei der Umsetzung? </zaunpfahl> ;-)

HTH & Ciao.
Markus
 
hi! ok dann bin ich einerseits beruhigt dass ich keine vorgehene möglichkeit übersehen habe :) (anders bei http://www.the-labs.com/FreeBSD/JailTools/ , dort ist das vorgesehen.. das host-sys ( usr) ro-mounten)

nun habe ich, wie du vorgeschlagen hast, das devfs reingemountet

in der basejail:


mkdir -p dev/ /var/ports/packages /var/ports/distfiles /var/run
mount -t devfs none /usr/jails/basejail/dev
cp /etc/resolv.conf etc/


cp ../flavours/default/etc/master.passwd etc/
cp ../flavours/default/etc/group etc/

dann muss man noch die passwort-db genieren. ich hab einfach in master.passwd was geändert und dann vipw - :wq - geht sicher eleganter :)


etc/make.conf
Code:
WRKDIRPREFIX=           /var/ports
DISTDIR=                /var/ports/distfiles
PACKAGES=               /var/ports/packages
 
Last edited:
nur scheisse dass jail/usr/local lokal ist. also muss man auch von jail/usr/local ein link zur basejail/usr/local machen, damits funktioniert.
 
habe mit ezjails ein paar jails installiert und mit dem nullfs-mounten von den host-ports in die jails kann ich dort auch prima die ports nutzen.
Also ich denk mal, du hast das gemacht, auf was eben die ezJail FAQ verlink.

nun ist es aber so, dass ich in allen jails viele gleiche ports installieren würde. portfix, links, mysql-client, etc pp, von den vielen kleinen und großen abhängigkeiten und libs ganz zu schweigen. diese redundanzen will ich vermeiden.
In der Jail die für mich die Ports baut (kann man natürlich auch im Basissystem machen), hat man über den dort laufenden FTP Server Zugriff auf das dortige "/var/ports/packages". Und diese FTP-Adresse steht bei mir überall als erste in PKG_SITES drin.
 
jo genau die seite habe ich auch als vorbild.

ich weiss nicht ob wir das gleiche meinen:

früher habe ich einfach /usr/local/bin in allen jails r-o gehabt. da hab ich also im host-system www/links installiert und hatte also in allen jails das programm.

das geht jetzt wohl nicht. wie du beschrieben hast, kann man den build-aufwand minimieren, in dem man 1x baut und dann von packages installiert.

inzwischen habe ich mich mit dem gedanken angefreundet, in jeder jail die binaris z.b. von www/links redundant zu haben. ich wollte grad schrieben dass der vorteil davon ist, dass jedes jail-verzeichnis in sich ein komplettes autonomes system ist, was das kopieren auf einen anderen rechner erleichtert. aber die jails brauchen trotzdem noch basejail/
 
blöde frage, wieso kann man nich gleich /usr/ports in die jails mounten anstatt basejail/usr/ports zu nehmen??


/usr/ports on /usr/jails/web/basejail/usr/ports (nullfs, local)
/usr/ports on /usr/jails/mail/usr/ports (nullfs, local, read-only)
 
mist. jetzt bin ich genau an dem punkt, an dem ich nie sein wollte :)

die jails sind ja alle unter /usr/jails/..

auf usr sind nur noch ca 11 GB frei. das sollte auch so bleiben, fürs host-system.

auf /data sinds noch 570 freie Gigabyte.

klar., ich kann jetzt wieder jeden scheiss mit nullfs reinmounten aber genau das wollte ich jetzt besser machen.

/data/jails/db -> /usr/jails/db/var/db/mysql
/data/jails/mail/maildirs > /usr/jails/mail/var/maildirs

etc. das ist käse.

/usr/jails/ müsste also nach /data/ - geht das jetzt noch einfach?!

any ideas?
 
hmm wie jetzt?
Wenn alle Jails mit ezjail erstellt wurden müsste das hinzubekommen sein. Alle Jails stoppen, verschieben und in den Config-Dateien von ezjails (/usr/local/etc/ezjail.conf und /usr/local/etc/ezjails/*) die Pfade anpassen. Außerdem in den /etc/fstab.jailname_domain_tld Dateien.

Ich habe das schonmal erfolgreich gemacht.

HTH & Ciao.
Markus
;-)
 
habs jetzt neu gemacht.
/usr/ports wird in die jails/usr/ports reingemounted. somit habe ich in jeder jail ein compltten rechner, ohne shared usr .. dieports-distfiles werden auch nicht zentral vorgehalten, wozu auch, genug bandbreite und speicher. kann man dann ab und an löschen, wenn der platz ausgeht:)
 
Back
Top