[vpsFree.cz: community-list] vpsAdminOS: revize šablon distribucí; nově openSUSE, Slackware a Void Linux

Jakub Skokan jakub.skokan at vpsfree.cz
Mon Jun 10 15:43:41 CEST 2019


Ahoj,

nejdřív to nejdůležitější: na stagingu je nyní podporováno openSUSE Leap 
15.1 a Tumbleweed, Slackware 14.2 a Void Linux (glibc, musl).

Poslední dva týdny jsem se snažil vylepšit situaci ohledně sestavování 
šablon distribucí, ze kterých se vytvářejí nové VPS. Od roku 2014 [1] 
používáme k sestavování šablon skripty build-vpsfree-templates [2]. Už 
tehdy bylo cílem šablony sestavovat pravidelně a automatizovaně, jenže 
se to nikdy nedotáhlo do konce. Šablony nestačí jen tak sestavit a hned 
je používat, protože distribuce se mění a skripty nemusí fungovat 
spolehlivě. Každá šablona se před použitím musí otestovat, a to se 
muselo vždy dělat manuálně.

Pokud chtěl někdo přispět, musel řešit kde a jak šablony sestavovat a 
testovat. Bylo nutné manuálně nainstalovat potřebné závislosti jako 
debootstrap, yum/dnf, zypper, atp. Na opravdové ověření funkčnosti bylo 
potřeba si nainstalovat OpenVZ.

Aktualizace šablony jedné distribuce spočívala ve zprovoznění skriptu 
samotného, výsledek si nakopírovat na nějaký systém s OpenVZ, pak z toho 
vytvořit VPS, zjistit že něco nefunguje (start, ssh, konzole, heslo, 
...) a zase na začátek. S uvedením vpsAdminOS se všechno muselo dělat 
2x, protože se šablony samozřejmě liší [3].

Ve výsledku se šablony aktualizovaly jen když to bylo nezbytně nutné. U 
stabilních distribucí jako Debian to nevadí, s aktualizací systému po 
vytvoření VPS není problém. Rolling-release distribuce jako Arch nebo 
Gentoo jsou na tom hůře a po delší době dá aktualizace více práce.

Proto jsem se snažil to aspoň na vpsAdminOS udělat lépe: zajistit stejné 
prostředí pro sestavování šablon a automatizovat testování. Nix a 
vpsAdminOS jednotné prostředí zajistit umí. Toho jsem využil a program 
pro sestavování šablon jsem přidal přímo do OS. K sestavení šablon tedy 
stačí nabootovat vpsAdminOS, třeba v QEMU [4]. Poté naklonovat skripty 
pro šablony na vpsAdminOS [3]:

   git clone -b vpsadminos 
https://github.com/vpsfreecz/build-vpsfree-templates.git
   cd build-vpsfree-templates

Program, kterým se šablony sestavují, se jmenuje osctl-image [5]. Sám o 
sobě žádnou šablonu sestavit neumí, funguje ve spolupráci se skripty 
výše, a očekává je v pracovním adresáři. Seznam šablon dostupných k 
sestavení zjistíme takto:

   osctl-image ls

Pro sestavení šablony je potřeba libovolný ZFS dataset. V konfiguraci 
pro QEMU je automaticky k dispozici zpool tank, takže můžeme použít 
např. tank/image-builds. Sestavení vybrané šablony pak vypadá takto:

   osctl-image build --build-dataset tank/image-builds ubuntu-18.04

Sestavené šablony se ve výchozím stavu ukládají do ./output. Sestavenou 
šablonu můžeme jednoduše otestovat:

   osctl-image test --build-dataset tank/image-builds ubuntu-18.04

Aktuálně se testuje: start/stop VPS, síť, nastavení hesla roota, 
hostname a připojení přes SSH. Chtělo by to ještě testovat i funkční 
konzoli a přihlášení.

Pokud něco nefunguje, můžeme si snadno ze šablony vytvořit VPS:

   osctl-image instantiate --build-dataset tank/image-builds ubuntu-18.04

Příkaz výše vypíše ID VPS, na kterou se můžeme podívat:

   osctl ct start -F instance-abcdefgh
   osctl ct attach instance-abcdefgh

Když je vše v pořádku, je čas na pull request. My šablonu přídáváme do 
repozitáře, ze kterého si ji vpsAdminOS stáhne při vytváření nové VPS:

   osctl-image deploy --build-dataset tank/image-builds ubuntu-18.04 
/kde/je/repozitar

Takto se staráme o výchozí repozitář na adrese 
https://images.vpsadminos.org.

Celý postup se dá shrnout do toho posledního příkazu, protože 
`osctl-image deploy` šablonu když je potřeba automaticky sestaví, 
otestuje, a až pokud je vše v pořádku, přidá ji do repozitáře. Podobně 
fungují i příkazy `test` a `instantiate`, proto je všude použito 
`--build-dataset`, aby se šablona mohla případně sestavit. osctl-image 
na pozadí spravuje VPS pro sestavovaní i testování šablon, jak to přesně 
funguje je popsáno v manuálu [5, 3].

Abychom s tím měli dlouhodobě co nejméně práce, připravil jsem Nix modul 
[6], pomocí kterého lze deklarativně nastavit pravidelné sestavování 
repozitářů a jejich obsahu. Výsledek si můžete prohlédnout ve 
vpsfree-cz-configuration [7].

Máme to nastaveno tak, aby se šablony sestavovaly jednou týdně v sobotu 
ráno. Ty, které se podaří správně sestavit a otestovat budou ihned 
přidány do repozitáře. Pokud něco selže, pošle se nám mail s cestou k 
logu, ve kterém zjistíme co a proč se stalo. Uvidíme na co ještě 
narazíme, ale zatím to vypadá, že by to mohlo fungovat.

[1] https://lists.vpsfree.cz/pipermail/community-list/2014-June/006697.html

[2] https://github.com/vpsfreecz/build-vpsfree-templates

[3] https://github.com/vpsfreecz/build-vpsfree-templates/tree/vpsadminos

[4] https://vpsadminos.org/user-guide/setup/

[5] https://man.vpsadminos.org/osctl-image/man8/osctl-image.8.html

[6] 
https://github.com/vpsfreecz/vpsadminos/blob/master/os/modules/services/osctl/image-repository.nix

[7] 
https://github.com/vpsfreecz/vpsfree-cz-configuration/blob/master/configs/image-repository.nix

Jakub


More information about the Community-list mailing list