vpsAdminOS: revize šablon distribucí; nově openSUSE, Slackware a Void Linux
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/osct... [7] https://github.com/vpsfreecz/vpsfree-cz-configuration/blob/master/configs/im... Jakub
participants (1)
-
Jakub Skokan