
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.