Inoffizieller Icinga 2 Arch Mirror Server

Ich habe seit heute mein Heimnetzwerk komplett auf Arch Linux umgezogen. Das einzige Problem dabei: Icinga2 (und Icinga Web 2) ist nicht in den offiziellen Repos. Das ist eigentlich die einzige Software, die ich nicht offiziell beziehen kann. Aber genau für solche Sachen hat Archlinux das „Archlinux User Repository“ oder kurz „AUR“. Eignetlich eine tolle Erfindung, weil man so mit etwas mehr Aufwand tolle Software beziehen kann. Im Fall von Icinga2 hat der Maintainer aber aktuell keine Zeit. Die dortige war jetzt seit Dezember 2017 aber nicht mehr geupdatet worden. Fun Fact: Beim erstellen dieses Blogposts wurde auf die Version 2.8.1 aktualisiert :-)
Wie dem auf sei: Der Nachteil ist, dass man die Packages selber kompilieren muss. Und dazu müsste man die Compiler und libs aber alle erstmal auf allen Archlinux Rechnern kompilieren. Oder man kompiliert es ein mal auf einer Maschine und verteilt das dann auf die anderen Hosts. Ich hatte mich für letzteres entschieden und das war einfach auf Dauer keine Lösung. Ich hatte zwar die Verteilung und Installation mit Ansible automatisiert, aber nervig war es trotzdem.

Deshalb habe ich nun einen innoffiziellen mirror nur für Icinga 2 (und zukünftig Icingaweb2) aufgesetzt. Dieser ist unter folgender URL zu erreichen: https://icinga2.mirror.veloc1ty.de. Der Webserver kann HTTP und HTTPs. Das TLS Zertifikat ist von Lets Encrypt. Alle Pakete werden mit einem PGP Key signiert. Dieser ist wie folgt:

-----BEGIN PGP PUBLIC KEY BLOCK-----

mDMEWmeG0BYJKwYBBAHaRw8BAQdAB4Nqjcv6Sl92cKMniAhyNooTP5aguawkM7WY
mj1/wqK0ZUljaW5nYTIgQXJjaCBNaXJyb3IgKFNpZ25pbmcga2V5IGZvciB0aGUg
aW5vZmZpY2lhbCBpY2luZ2EyIGFyY2hsaW51eCBwYWNrYWdlcykgPGljaW5nYTJA
dmVsb2MxdHkuZGU+iJYEExYIAD4WIQTq7bpQImslrsFIA0Ub4Uxy2Q5sAAUCWmeG
0AIbAwUJCWYBgAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRAb4Uxy2Q5sAMY2
AQDw7ulabkF8fP0DZCNNuIGW0HSRNmBaCNzqhENp533h7AD+PxY9sSHxk8Zt+4gE
HVVQLpy5y1WHtr3vIV30XfDXtgA=
=tobr
-----END PGP PUBLIC KEY BLOCK-----

Die Kenner unter euch wird sofort auffallen: Mensch ist der kurz. Aber das ist erstmal okay, denn es handelt sich um einen ECC key. Der Key kann auch über die URL https://icinga2.mirror.veloc1ty.de/icinga2.pub bezogen werden.

How to use it

Importiert den obigen PGP Key als root auf eurer Zielmaschine mit Hilfe von „gpg –homedir /etc/pacman.d/gnup –import icinga2.pub“. Als nächstes müsst ihr den PGP key trusten. Dies könnt ihr mit „gpg –homedir /etc/pacman.d/gnup –edit-key 1BE14C72D90E6C00“ machen. In dem Menü tippt ihr „trust“ ein und legt nach sorgfältiger Überprüfung einen Trustlevel an. Als nächstes muss Pacman das Repo kennen lernen. In der Datei /etc/pacman.conf muss am Ende der Datei folgender Block eingetragen werden:

[icinga2]
Server = https://icinga2.mirror.veloc1ty.de

Ihr könnt auch https durch http ersetzen. Der Security sollte das nicht schaden, da Pacman die PGP Signatur überprüft. Prüft die Integrität mit einem „pacman -Sy“. Pacman sollte das Repo ohne murren auflisten. Bitte beachtet, dass die von mir bereitgestellten Sachen User Content ist. Ich benutze es schon auf mehreren Systemen, aber das ist kein Garant für Verfügbarkeit und Aktualität der angebotenen Pakete.

Falls ihr eine Lösung für die Automatisierung sucht, dann findet ihr in der README.md ein Beispiel wie ich das mache. Link: https://github.com/vlcty/ansible-role-arch-mirror

Backend

Ich würde gerne noch kurz ausholen wie diese Pakete generiert werden. Ich habe dazu eine Ansible Rolle entwickelt. Diese Rolle erzeugt einen neuen LXC Container, sodass immer die aktuellste Software verwendet wird. Danach checkt es das Git von Icinga2 von GitLab aus und extrahiert den letzten Tag. Mit Hilfe des Tags wird dann der Source Code in eine neue Version gepackt. Ich habe dazu die ursprüngliche PKGCONFIG vom AUR Package genommen und angepasst. Danach wird das Paket ganz normal gebaut und vom LXC Container runter geladen. Der LXC Container wird dann nach dem Download gelöscht. Die erstellten Pakete werden dann über eine zweite Rolle hochgeladen und signiert. Das passiert aktuell manuell, aber da bin ich auch aktuell dabei das zu automatisieren, sodass zwei mal am Tag das Paket neu gebaut wird.
Die Rolle für das Compilieren von Icinga2 muss ich noch refactoren und dokumentieren. Danach werde ich diese auf GitHub hochladen und hier verlinken. Die Rolle für das Erstellen des Arch Mirrors und das hochladen der Pakete ist schon eine öffentliche Rolle, die ihr hier auf GitHub anschauen könnt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.