Hele vejen rundt om FreeBSD jails
Efter mere end 2 års arbejde, er jeg nu kommet hele vejen rundt om virtualisering med FreeBSD jails.
Et jail tilbyder virtualisering på systemniveau, forstået på den måde, at programmer startet i et jail, tror at de kører på basesystemet, selvom de i realiteten bliver afviklet fra en undermappe på basesystemet. Det svarer lidt til chroot; programmet kan ikke komme ud af den mappe det er startet i. Så det kan heller ikke få adgang til indholdet i andre jails (medmindre det selv kører dem) eller basesystemet. Programmet er bogstaveligt talt fængslet.
Grunden til at det har taget så lang tid er, at som med så meget andet, er tingende komplekse, og jeg har kun kunne bruge ~2 timer om ugen på dem. Nu når de virker, kan de flyttes fra server til server med rsync, eller pakkes sammen med tar/zip duoen. Filegenskaberne skal bibeholdes, så de kan ikke bare zippes eller kopieres.
Hver tjeneste og hjemmeside har fået sit eget jail, som automatisk får taget backup hver nat. Opdateringer af pakkerne bliver gennemført af et script, de enkelte jails kan sikkerhedsopdateres på få minutter pr. stk., og det er muligt at tilføje og fjerne funktioner fra deres basesystemer. Alt i alt en meget fleksibel løsning, som kører upåklageligt.
Selvom jeg normalt syntes at FreeBSD er fremragende at arbejde med, så har jails være frustrerende at sætte op. De har eksisteret i FreeBSD i over 20 år, og af den grund findes der rigtig meget forældet dokumentation om dem. Mange folk har specifikke meninger om dem, som jævnligt strider imod andres meninger og de officielle manualer. Manualer som i øvrigt både er gamle, spredte og mangelfulde. Jeg endte med at læse noget så arkadisk som Makefiles. At den endda starter med
This makefile is simple by design
burde tjene som en solid advarsel, om at jeg var i gang med at dumme mig på den rigtig dumme måde. På den anden side, så havde jeg vel ikke noget bedre at lave den dag, end at lede efter targets til make, i hvad der mest af alt minder om et shellscript fra helvede.
Men det lykkedes til sidst. Jeg fejrede det med en sikkerhedsopdatering af dem, og en oprydning i mine noter. På et eller andre tidspunkt skriver jeg nok en guide, som dækker processen i detaljer, og systemadministration på FreeBSD i det hele taget.
// Nicky