Home icinga certificate service
Post
Cancel

icinga certificate service

Dieser Beitrag wurde vor mehr als 5 Jahren veröffentlicht!
Höchstwahrscheinlich ist dieser inzwischen veraltet.

Ich möchte mal eben eine Idee herunter schreiben, die mich seit einiger Zeit beschäftigt und zu der ich – hoffentlich – eine Lösung anbieten kann.

Bei meinem Arbeitgeber beschäftige ich mich – neben Tools & Automatisierung – auch mit dem Thema Monitoring. Ich habe über die Jahre in dem Bereich ein größeres Wissen aufgebaut und betrachte das, auch mit meiner Erfahrung aus mehreren Jahren 24/7 1st Level Bereitschaft, mit anderen Augen als Entwickler.

Ich habe mit einer Kollegin jetzt ein experimentelles Monitoring Setup aufgebaut, mit deren Hilfe es möglich ist, einen ganzen Block von Tomcat Applikationen automatisch in ein Monitoring aufzunehmen. Dazu gehören ein größeres Set an Grafana Dashboards und Icinga2 Checks.

Designtechnisch habe ich das Erheben von Daten und deren Speicherung und Darstellung vollständig von einander getrennt.

Da das Ausrollen des Monitorings automatisch über unsere CI erfolgen soll, ist es mit Icinga2 nicht so einfach möglich, einen Satelliten dynamisch an einen Master zu bekommen. Um das Problem zu beheben, habe ich mit eine einfach Lösung erarbeitet, mit deren Hilfe es möglich ist, das Problem zu lösen. Dazu wird auf der Node, welche den Icinga2-Master zur Verfügung stellt, ein REST-Service installiert, der sich um das erstellen der Satelliten Zertifikate kümmert. Der REST-Service ist so weit abgesichert, dass dieser nur mit einer Basic-Authentication angesprochen werden kann. Zusätzlich muß ein Icinga2 API User angegeben werden, damit ein passendes Zertifikat ausgestellt werden kann.

Wenn beides gegeben ist und das Zertifikat erstellt werden konnte, erhält der anfordernde Satellite ein Hash-Code zurück, mit dem er sich die Zertifikate herunter laden kann. Damit man hier nicht auch noch nach Jahren das Zertifikat bekommt, ist dieser Hash-Code nur 10 Minuten gültig.

Mit diesem Ansatz ist es mir möglich in einem CI-Setup unendlich viele Icinga2-Satelliten automatisiert zu erstellen und an einem Icinga2-Master zu binden.

Den Code dazu habe ich auf GitHub als OpenSource veröffentlicht.

Vielleicht hilft es anderen, ähnliche Probleme zu vermeiden.

This post is licensed under CC BY 4.0 by the author.