Sjálfvirk uppsetning á FreeBSD
Hér munum við nota bsdinstall (8) til að gera .iso skrá sem setur sig upp sjálf, til notkunar í skýinu. Uppsetta vélin mun vera uppfærð, með IP-tölu, netsamband, notanda og SSH lykil fyrir þann notanda. Við munum einnig setja upp lykilorðalaust sudo fyrir notandann. Hægt er að setja upp pakka o.fl., en við munum einungis setja upp grunnþjónustur þannig að frekari uppsetning geti farið fram í gegnum Ansible.
Við munum sækja tilbúna uppsetningarskrá frá heimasíðu FreeBSD, afþjappa hana, setja uppsetningarskrá í /etc/installerconfig, endurpakka í .iso skrá og nota til uppsetningar.
Uppsetningarmiðillinn settur upp
Byrjum á því að ná í tilbúna .iso skrá frá heimasíðu FreeBSD, afþjöppum og setjum innihaldið í möppu
% mkdir freebsd-auto
% wget https://download.freebsd.org/releases/amd64/amd64/ISO-IMAGES/13.1/FreeBSD-13.1-RELEASE-amd64-disc1.iso
% tar -xv -C freebsd-auto -f FreeBSD-13.1-RELEASE-amd64-disc1.iso
root:wheel, annars mun kerfið kvarta yfir því að kerfisskipanir séu ekki í eigu rótarnotandans:
Sjálfvirka uppsetningarferlið mun hanga þar til við veljum terminal týpu, þetta á að vera hægta að stilla í gegnum gildi í /etc/ttys og /boot/loader.conf, ég fæ það ekki til að virka þannig við breytum /etc/rc.local í uppsetningarmiðlinum. Eyðið if-setningunni sem spyr þessarar spurningar og harðkóðið export TERM=vt100 í staðinn.
Skrifum næst uppsetningarskrána. Hún er skipt í tvo hluta, sá fyrri skilgreinir breytur sem hafa áhrif á uppsetningu, t.d. hvernig diskum er hagað og hvaða hlutar stýrikerfisins eru settir upp. Sá seinni er skelskrifta. Þessir hlutar eru aðskildir með stæðunni #!/bin/sh.
PARTITIONS=DEFAULT
DISTRIBUTIONS="kernel.txz base.txz"
#!/bin/sh
# Skilgreinum breytur
SSH_KEY="<dreifilykill notanda>"
SSH_DIR="/home/thg/.ssh
HOSTNAME="freebsd.dæmi.is"
# Virkjum netstillingar
ifconfig vtnet0 192.168.40.20 netmask 255.255.255.0
route add default 192.168.40.1
# Setjum inn netstillingar varanlegar og virkjum SSH
sysrc ifconfig_vtnet0="inet 192.168.40.20 netmask 255.255.255.0"
sysrc defaultrouter="192.168.40.1"
sysrc sshd_enable=YES
# Bætum við notanda og SSH lykli
pw useradd -n thg -d /home/thg -m -G wheel -s /bin/tcsh
mkdir $SSH_DIR
echo $SSH_KEY > $SSH_DIR/authorized_keys
# Uppfærum kerfið
# Hér segjum við pkg að g.r.f. að við segjum já við öllu, og öllum upplýsingum er pípað í cat,
# annars er less notað, þá þarf eiga við það handvirkt.
env ASSUME_ALWAYS_YES=YES pkg bootstrap -f | cat
env ASSUME_ALWAYS_YES=YES pkg upgrade -f | cat
freebsd-update fetch | cat
freebsd-update install | cat
# Sækjum pakka
pkg install -y sudo python
# Sudo réttindi
echo "thg ALL=(ALL) NOPASSWD: ALL" > /usr/local/etc/sudoers.d/thg
Afritum skriftuna á réttan stað
Pökkum öllu aftur í .iso skrá, tilbúna til notkunar.
.iso skráin er svo færð á libvirt hýsilinn.
Uppsetning sýndarvélar með uppsetningarmiðli
Hér verður .iso skráin sett upp á Ubuntu hýsli með KVM/libvirt með ZFS skráakerfi þar sem gagnasett (e. dataset) er gert undir sérhverja sýndarvél. Keyrum uppsetninguna:
# virt-install --name freebsd-auto \
--os-variant freebsd13.0 \
--memory 2048 \
--vcpus 2 \
--cdrom freebsd-auto.iso \
--disk path=/fast/vm/freebsd/freebsd.qcow2,size=16 \
--network bridge=brvm \
--graphics none \
--boot uefi
Note
Þetta er nokkuð almenn uppsetning, en uppsetningarmiðillinn gerir ráð fyrir að við keyrum uefi þannig við þurfum að tilgreina --boot uefi, annars keyrir vélin ekki eftir uppsetningu.
Uppsetningin ætti ekki að taka langan tíma, að henni lokinni erum við með nýuppfærðan þjón með SSH lyklinum okkar og sudo-réttindum.
Bilanagreining
Þetta virkaði ekki hjá mér fyrr en í 24. útgáfu af freebsd-auto.iso út af eftirfarandi ástæðum:
- Uppsetningin hékk, þurfti að aftengja console aðganginn,
virsh console-a mig aftur inn, þá þurfti ég að velja terminal týpu handvirkt- Það er leyst með
export TERMINAL=vt100eins og var lýst hér að ofan - Að eiga við
/etc/ttysog/boot/loader.confvirkar ekki
- Það er leyst með
- Einhver
f_dprintfsetning í/usr/libexec/bsdinstall/scripthenti í "Bad file descriptor" villu og uppsetningin hrundi- Leyst með því að breyta öllu "f_dprintf" í "echo"
- Uppsetningin kláraðist, en eftir endurræsingu gat ég ekki console-að inn
- Hélt fyrst það væru console stillingarnar í sýndarvélinni, ekki málið
- Hélt það væri diskauppsetingin og það vantaði boot diskasneið, ekki málið
- Mount-aði diskinn:
modprobe nbd max_part=63til að hlaða kjarnaeiginleikum, svoqemu-nbd -c /dev/nbd0 freebsd-auto.qcow2til að festa sýndarvélina við disk, að lokummount -r -t ufs -o ufstype=ufs2 /dev/nbd0p1 /mnttil að mount-a diskinn.- Á disknum mátti sjá "efi" bregða mikið fyrir undir
/boot/, kemur í ljós að libvirt reynir að keyra bios en uppsetningarmiðillinn setur upp efi.- Leyst með
--boot uefií virt-install skipuninni.
- Leyst með
- Á disknum mátti sjá "efi" bregða mikið fyrir undir
- Einnig getur verið gott að keyra single user mode frá uppsetningarmiðlinum til að ganga úr skugga um hvað diskar, netöld og fleira er nefnt