Icinga 2 csomagok készítése Enterprise Linux-okhoz

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

Az Icinga 2 monitoring eszköz, amely a rendszer-adminisztrátorok életét hivatott megkönnyíteni. A szoftverrel kapcsolatban gyakran merül fel a kérdés: miért nem érhető el naprakészen az Enterprise Linux (EL) disztribúciókon, például RHEL, CentOS, AlmaLinux, RockyLinux SUSE Linux Enterprise Server és Amazon Linux 2 (AWS) alatt? Természetesen vannak naprakész csomagok, de előfizetéshez kötöttek. Régen ez nem így volt, voltak elérhető csomagok, de Icinga 2 fő fejlesztője változtatott az üzletpolitikáján. Az okok összetettek, és túlmutatnak a puszta technikai akadályokon – anyagi, licencelési, közösségi és filozófiai rétegei is vannak. Ez úgy gondolom, hogy még majd egy külön blogbejegyzést is megérdemelne, amire ki szeretnék térni.

Az Icinga fejlesztője úgy gondolta, hogy a fizetős Linux operációs rendszer csomagokat fizetős szolgáltatásként nyújtja, amely többekben ellenérzést keltett. Ugyanakkor szerintem védhető álláspont, noha Windows esetén a cég pont nem ezt az utat követte. Azt gondolom, semmi olyat nem tett a cég, amely a licenccel nem összeegyeztethető, csupán a binárisok lettel elérhetetlenek, a forráskód továbbra is letölthető innen. A probléma innentől kezdve a csomagok építésére korlátozódik. A csomagok építése alapvetően nem bonyolult, ugyanakkor, hogy rendszerről-rendszerre ne változzanak az komponensek, pedáns build folyamatra, reprodukálható eljárásra van szükség. Innentől kezdve ez természetesen konténert jelent és a Mock nevű alkalmazást, amelyet az Enterprise Linux világ előszeretetten alkalmaz.

Az elégedetlenség egyik iránya vezetett a https://www.freedom-for-icinga.com weboldal megszületeséshez, amely már elérhetetlenné vált, s csak az archive.org mentette meg nekünk. Ezen az oldalon egy egyedi RPM szoftvertároló üzemelt, ahonnan a legújabb Icinga 2 buildek leölthetőek voltak. De ez a lehetőség is megszűnt idén januárban. Hogy a motiváció elvesztése, vagy más technikai, esetleg jogi probléma vezetett ide, nem tudni, mindenesetre a honlap alapján rekonstruálható ez a buildelési eljárás. Ezt csak archiválási céllal írtam össze, a követendő varázslat majd a blogbejegyzés későbbi részében érkezik.

Betekintés a csomagok fordítási folyamatába

Az alábbi lépésekben bemutatom, hogyan történik az Icinga csomagok (például az icinga2, icinga2-bin, icinga2-common) forráskódjának lefordítása és bináris csomagokká alakítása Red Hat-alapú rendszereken (Enterprise Linux 9 disztribúciókon, mint például Red Hat Enterprise Linux 9, Rocky Linux 9, AlmaLinux 9).

1. Válassz egy megfelelő gépet

Olyan rendszert használj, amelyen Enterprise Linux 9 disztribúció van telepítve.

2. Telepítsd a szükséges csomagokat

sudo dnf -y install git-core mock

3. Add hozzá a jelenlegi felhasználót a „mock” csoporthoz

sudo usermod -a -G mock $USER

Ezután jelentkezz ki, majd újra be a változás érvényesítéséhez.

4. Töltsd le a kívánt kiadás forráskódját

Látogasd meg az alábbi oldalt:

https://github.com/Icinga/icinga2/releases

Majd futtasd:

curl -LO https://github.com/Icinga/icinga2/archive/refs/tags/v2.14.5.tar.gz

5. Töltsd le a hozzá tartozó „specification” fájlt (spec fájl)

curl -LO https://git.icinga.com/packaging/rpm-icinga2/-/raw/master/icinga2.spec

Megjegyzés: A legújabb verzióhoz nem lesz spec fájl, így tölts le egy korábbi verzióhoz tartozót, és szerkeszd át:

Például módosítsd ezt:

Version: 2.13.5

erre:

Version: 2.14.5

6. Fordítsd le a forrás RPM csomagot

mock --dnf --clean --spec icinga2.spec --sources=. --result=result --build

Ez létrehoz egy .src.rpm fájlt, például:

result/icinga2-2.14.5-1.el9.src.rpm

7. Fordítsd le a bináris RPM csomagokat a forrás RPM alapján

mock --dnf --clean --sources=. --result=result --rebuild result/icinga2-2.14.5-1.el9.src.rpm

Ez több bináris .rpm fájlt fog létrehozni a result könyvtárban, amelyeket közzé lehet tenni publikus csomagtárolóban (repository), és így más rendszerekre is telepíthetők.

További információk: A teljes lista és útmutatók elérhetők az Icinga 2 más csomagjaihoz is, mint például az icingaweb2, icingadb-redis, stb. Érdemes ezekhez is külön dokumentációkat megtekinteni a https://github.com/Icinga oldalról.

Betekintés a konténerben készülő csomagok fordítási folyamatába

Mielőtt megnéznénk a fordítás menetét RedHat 9 vagy más Enterprise Linux 9-es verziójával, érdemes megismerni, hogy a Mock képes akár más verziójú csomagot is előállítani, amihez számos presetet is biztosítanak. Ezek a presetek a 

/etc/mock/

és

a /etc/mock/eol/

mappákban találhatóak.

Ennek megfelelően, elég egyszerűen lehet új csomagokat építeni régebbi rendszerekhez is, így CentOS7-hez vagy éppen Oracle Enterprise Linux 8-hoz is. Az előbbihez használható a:

centos+epel-7-x86_64

preset, az utóbbihoz pedig a:

oraclelinux+epel-8-x86_64

preset, a futtató dockeres parancssorban, a MOCK_CONFIG környezeti változó meghatározásával. Így nincs más dolgunk, mint egy parancssorban megadni a felcsatolt volume-ot, annak a helyét a Mock számára, illetve a SOURCE fájl és a SPEC fájl helyét a konténer volume-on, a következő paranccsal:

docker run --rm --privileged=true --volume="/root/rpmbuild:/rpmbuild" -e MOUNT_POINT="/rpmbuild" -e MOCK_CONFIG="oraclelinux+epel-9-x86_64" -e SOURCES="SOURCE/v2.14.5.tar.gz" -e SPEC_FILE="SPEC/icinga2.spec" mmornati/mock-rpmbuilder

A parancs kiadása után pár perc után elkészülnek a szükséges forrás (src) rpm fájl és a további telepíthető icinga2 rpm-csomagfájlok.