jail.conf: Mehrere exec Parameter - Syntax?

Errorsmith

Kompiliertier
Hi

Ich spiele gerade mit der jail.conf herum. Ich möchte eine vnet Jail erzeugen, die ich mit jail -c test01a starten kann. Vor dem Start müssen mehrere Kommandos laufen um die epair Interfaces zu erzeugen, danach mehrere Kommandos um das Interface auf die bridge zu binden und zu konfigurieren. Mit der rc.conf Methode gab es sowas wie:
Code:
jail_test01a_prestart0="ifconfig epair0 create"
jail_test01a_prestart1="ifconfig bridge0 addm epair0a"
jail_test01a_prestart2="ifconfig epair0a up"

Laut manpage muss das auch irgenwie mit der jail.conf gehen:
man 8 jail schrieb:
They may be given multiple values, which run would the specified commands in sequence. All commands must succeed (return a zero exit status), or the jail will not be created or removed.

Leider ist in der manpage von jail und jail.conf nicht erklärt wie man dies in der jail.conf festhält.

Im Ergebnis möchte ich erreichen, das er beim Start der jail die nötigen epair devices erzeugt und an die bridge0 bindet, und dann die eigentlich jail startet. Auf der Kommandozeile bekomme ich das ohne Probleme hin, leider nicht mit der jail.conf. Google hat mir da bisher auch nicht weitergeholfen.

Kann mir da jemand auf die Sprünge helfen?

Grüße,
errorsmith
 
Vor dem Start müssen mehrere Kommandos laufen um die epair Interfaces zu erzeugen,
Code:
jail_test01a_prestart0="ifconfig epair0 create"
jail_test01a_prestart1="ifconfig bridge0 addm epair0a"
jail_test01a_prestart2="ifconfig epair0a up"

Laut manpage muss das auch irgenwie mit der jail.conf gehen:

Nach man 5 jail.conf müsste das so gehen:
Code:
jailname {
   exec.prestart  = "ifconfig epair0 create";
   exec.prestart += "ifconfig bridge0 addm epair0a";
   exec.prestart += "ifconfig epair0a up";
}
 
Danke, das war exact was ich gesucht habe. Die komplette Definition für die jail sieht nun so aus:
Code:
test01a {
    # testjail
    # desc: testjail 01a
    # baseparams
    name = "test01a";
    path = "/storage/jail/$name";
    host.hostname = "test01a";
    vnet = "new";
    vnet.interface = "epair0b";
    persist;
    # execparams
    exec.prestart =     "ifconfig epair0 create";
    exec.prestart +=    "ifconfig bridge0 addm epair0a";
    exec.prestart +=    "ifconfig epair0a up";

    # startkommando leerlassen da erst das netzwerk fertig konfiguriert werden muss
    exec.start =        "";

    exec.poststart =   "jexec $name ifconfig epair0b xxx.xxx.xxx.xxx netmask 255                                                                                                .255.255.0 up";
    exec.poststart +=   "jexec $name route add default xxx.xxx.xxx.yyy";
    exec.poststart +=   "jexec $name ifconfig";
    exec.poststart +=   "jexec $name sh /etc/rc";

    exec.stop =         "sh /etc/rc.shutdown";

    exec.poststop =     "ifconfig bridge0 deletem epair0a";
    exec.poststop +=    "ifconfig epair0a destroy";
};

Damit funktioniert das ganz genau so wie ich es haben wollte.

Grüße,
errorsmith
 
Hi

Nunja, gemischt. Meine Umgebung:
Neue Maschine die irgendwann ein Heimserver werden soll. Darauf ein 9.1-RELEASE. Weil ich noch am testen und rumspielen bin habe ich mir nicht die Mühe gemacht zu updaten sondern das serienmäßige memstick Image installiert. Kernel angepaßt und neu gebaut.

Die Doku ist (noch)... naja... gewöhnungsbedürftig knapp. Google bringt da auch mehr Uraltzeug als aktuelles. (vnet mit 8-RELENG und solches). Ich werde meine Erkenntnisse auf jeden Fall auch schriftlich festhalten. Die Konfiguration ist (natürlich) ein gutes Stück komplexer geworden als vorher und an die lange Liste von devices die ifconfig ausgibt muß ich auch erst gewöhnen. ;)

Die jails selber laufen ziemlich gut. Habe in einer mal testweise ein Samba installiert, das läuft sauber ohne Mucken, ich kann ein NFS Share innerhalb der jail mounten. Sonst nichts weiter erwähnenswertes, Die Dinge, die ich bisher getestet habe an netzwerkspezifischem Kram funktionierten hervorragend. Starten und Stoppen läuft bei mir über jail.conf und Yamagis jail2-Script aus den Ports.

Aber:
Bisher zwei spontane Resets (nicht Panic), die wahrscheinlich im Zusammenhang stehen mit dem Entfernen von epair-devices. Ursache ließ sich nicht ermitteln. Daher werde ich irgendwann am WE 9.2-RC installieren und schauen ob das da immer noch auftritt.

Wenn du konkrete Fragen hast, löcher mich :)

Grüße,
errorsmith
 
In 10-CURRENT gab es eine Reihe Verbesserungen an VIMAGE, vor allem von rodrigc@. An pf arbeitet jemand, es soll vollständig virtualisiert werden. Ich habe noch immer kein produktives Setup mit vnet-Jails, habe aber letzten wieder Testläufe unter -CURRENT gemacht. Insgesamt scheint es unter Last nun stabiler zu laufen, das Grundproblem mit den Speicherlecks beim Beenden des Jails, ist aber leider nach wie vor nicht gelöst... Marko Zec (der es ursprünglich geschrieben hat, aber nicht mehr daran arbeitet) meinte letztens in einer Diskussion, dass die einfachste Lösung wäre alle vnet-Instanzen in die gleiche UMA-Zone zu werfen. Soll wohl auch gar nicht so schwer sein. Wollen wir nur hoffen, dass sich jemand freiwillig dafür findet.
 
Ich hatte eigentlich vor alle meine jails als vnet umzusetzen. Abgesehen von den beiden Resets sieht das auch soweit gut aus. Hier werde ich mal sehen was 9.2 verbessert. pf brauche ich auf der Maschine nicht, da habe ich eine extra Kiste für.

Angenehmerweise kann ich noch eine Weile mit der Maschine rumspielen bevor ich den alten Server abschalte. Allerdings ist es "nur" ein Heimserver, Szenarien unter sehr hoher Last habe ich eigentlich nicht wirklich.

Im Moment aktualisiere ich auf 9.2-RC1, eventuell teste ich auch mal -CURRENT, das will ich aber dann nicht auf dem fertigen Teil haben. Falls Merkwürdigkeiten auftreten kann ich ja hier reinschreiben.

Edit: Wenn Interesse besteht kann ich meine Notizen in Form eines Howtos (vnet jails mit automatischen start beim booten) hier reinschmeißen bzw. einen Link auf die Seite auf der ich es aufgeschrieben habe. Im Wiki steht auch nichts zum Thema vnet, vielleicht sollte ich es besser dort hin tun?

Grüße,
errorsmith
 
Zuletzt bearbeitet:
Zurück
Oben