Seite wählen

Ergebnisse für " Advanced Puppet Training "

Weekly Snap: TKmon for Servers, Puppet & Pacemaker Courses

weekly snap22 – 26 July was packed with training courses on Puppet and Pacemaker, tips for SAHI and Vagrant vboxsf, and a new monitoring software for servers to boot.
Martin presented TKmon, a simplified version of Icinga for Thomas Krenn Servers that automatically notifies Thomas Krenn for support on hardware problems.
Eva counted 92 days to the OSMC with Simon Meggle’s presentation on “End-2-End Monitoring of Web Applications with SAHI”.
She went on to introduce our Puppet training courses – the first officially certified classes in Germany for beginners, advanced users and even developers wishing to extend the configuration management software.
Continuing with courses, Lennart gave us a peek into his teaching plan on building clusters with Pacemaker as Eric shared his quick tip for delivering Javascript files and images using Vagrant vboxsf.
Lastly, Bernd lamented superficial Facebook birthday wishes while Stephanie reported on this year’s B2Run and our 17-man team of joggers.

Unsere Puppet Trainings – eine Entscheidungshilfe

Seit Beginn des Jahres gibt es bei uns, zusätzlich zu den beliebten Puppet Fundamentals Kursen, nun auch die neuen Puppet Fortgeschrittenentrainings. Als erster, zertifizierter  Anbieter in Deutschland machen wir Fans der Konfigurationsmanagementsoftware jetzt auch fit für die Profiliga. Zusätzlich gibt es mit „Extending Puppet using Ruby“ auch endlich Trainings speziell für das Development rund um Puppet.
Bei so viel Auswahl fällt die Entscheidung natürlich schwer. Deshalb gibt es heute eine Orientierungshilfe, die auch deutlich machen wird, ab wann Du bereit für die Aufbaukurse bist.

Puppet Fundamentals – der Einstieg für Admins mit Unix-/ Linux-Erfahrung:
Der bereits bekannte Grundlagenkurs ist für viele Blogleser vermutlich schon ein alter Hut. In dem Fall kann man natürlich gleich beim nächsten Punkt weiterlesen. Allen anderen sei gesagt, dass es Zeit wird diese Wissenslücke zu schließen und sich umgehend anzumelden.
Vorab aber natürlich alle Infos zum Inhalt:

  • Entwicklung von Modulen und Klassen auf typischen Zielsystemen
  • Verwendung von Puppet Apply für den Test und Weiterentwicklung von Modulen
  • Speicherung von Puppet Modulen auf dem Puppet Master
  • Korrekte Verwendung von Klassen in Node-Definitionen
  • Start des Puppet Runs unter Verwendung der Live Management GUI
  • Sammlung und Auswertung der Ergebnisse in der Enterprise Console

Angefangen bei den Grundlagen zu Puppet bis hin zum konkreten Einsatz in der eigenen Umgebung bietet der Kurs alles, was für den Einstieg in das Thema Konfigurationsmanagement mit Puppet notwendig ist.
Puppet Advanced – Puppet Feintuning für Admins und Entwickler:
Der Aufbaukurs ist natürlich perfekt geeignet für alle, die Puppet Fundamentals bereits besucht haben und jetzt wissen möchten, was man noch alles anstellen kann um das Maximum aus der Software rauszuholen.
Wer seine Puppetkenntnisse aber nicht über die Grundlagenschulung erworben hat, ist auch herzlich willkommen. Neben Neugierde sollte man allerdings noch ein bisschen Basiswissen mitbringen, damit der Einstieg auch klappt. Types, Nodes und Modules und deren Verwendung sollten schon beherrscht werden, damit mit Puppet-Advanced ein Erfolg garantiert ist.

Was einen dann im Kurs erwartet ist:

  • Abgrenzung von Daten und Codes
  • Erstellung von großen Code-Verzeichnissen
  • Reporting und Auditierung
  • MCollective
  • Optimierung und Skalierung von Puppet
  • Code-Komprimierung und Best Practices

Durch die Vertiefung der Grundlagen und der Einführung in komplexere Konfigurationen macht Puppet mit dem Training „Puppet Advanced“ so richtig Spaß. Live-Management mit MCollective rundet das Ganze dann noch ab.
Extending Puppet using Ruby – das Profitraining für Devs und Ops:
Auch hier reicht, laut Gebrauchsanweisung von Puppet Labs, das Fundamentals Training, um durchzustarten. Eine gute Grundlage sind zusätzliche Erfahrungen mit Ruby, die wir Interessierten aber auch gerne auf Anfrage an einem zusätzlichen Einführungskurs am Vortag der Schulung vermitteln. Der Zusatztag ist dabei kostenfrei!
Inhaltlich geht es hier um die Grundlagen der Sprache Ruby und deren Zusammenspiel mit Puppet:

  • Einführung in die allgemeinen Ruby Grundlagen für Puppet Development (auf Anfrage)
  • Grundlegende Aspekte zum Ausbau des Puppet Frameworks
  • Erweiterte Custom Facts und Functions
  • Custom Resource Type und Provider Development
  • Custom Report Handlers
  • Custom Hiera Backends für Datenabstraktionen
  • Modultests für Ruby & Puppet unter Verwendung von RSpec & Mocha
  • Code Contribution an die Community

Alle Kurse gibt es natürlich mit dem gewohnten Rundum-sorglos-Paket, inklusive Übernachtung und auf Wunsch auch mit Vorübernachtung.
Damit ist doch eigentlich alles klar, oder?
Falls nicht helfen wir natürlich auch gerne weiter.

Puppet, Puppet, Puppet und noch mehr Puppet

Puppet, Puppet, Puppet…. in den letzten Wochen drehte sich hier alles um Puppet. Es drehte sich sogar alles soooo sehr um Puppet, dass ich zwischenzeitlich sogar beinahe vergessen hätte, dass wir in Kürze zur CeBIT fahren und ich langsam anfangen müsste panisch zu werden.
Alles begann damit, dass unsere Puppet Fundamentals-Schulung diesmal ganz besonders früh ausgebucht war – im Grunde eine schöne Sache sollte man meinen. Allerdings häuften sich dann Anrufe und E-Mails, die in ihrem Grundton irgendwo zwischen verzweifelt und aggressiv changierten. Offenbar ist der Februar ein ganz besonders gefragter Puppet-Schulungsmonat, denn einige Interessenten machten tatsächlich Anstalten mich bestechen zu wollen. So nach dem Motto: „Ich habe ja durchaus Verständnis dafür, dass Sie die Teilnehmerzahl nicht vergrößern können, aber sicher könnten Sie doch für mich eine klitzekleine Ausnahme machen, wenn nach der Schulung der Rest meiner Abteilung zum nächsten Schulungstermin geschickt wird.“
Nein, kann ich nicht. Und ich muss dazu sagen, dass ich das leider nicht kann, weil ich mir natürlich auch Gedanken darum machen muss, wie zufrieden ein Schulungsteilnehmer noch sein wird, wenn Ihm ein Training in Kleingruppe versprochen wird und er dann mit zwanzig Mann frontalunterrichtet wird.
Hätte man versucht mich mit Essen zu bestechen oder mit der Bohrmaschine die ich mir schon seit zwei Jahren zum Geburtstag wünsche… vielleicht hätte mein gesunder Menschenverstand für einen Moment ausgesetzt und es wäre mir vollkommen wurschd gewesen. So aber hatte ich alle Sinne beisammen und konnte lediglich anbieten einen Zusatztermin einzurichten.
Mach ich tatsächlich gerne, vor allen Dingen, wenn ich (ungewöhnlicher Weise) direkt beim ersten Hotel, das ich für die Schulung um Obdach bitte, freie Räumlichkeiten bekomme. Einziges Problem war nur, dass wir in dieser Position gerade nur Mitarbeiter haben, die bis ins Jahr 2017 schon mit Terminen vollgepackt sind.
Unser Sebastian (der Mensch hinter der entspannten Stimme aus dem Puppet Webinar) hat sich dann doch noch erbarmt für ein paar Tage sein Managed Services-Team ohne Aufsicht managen zu lassen. Im April gibt er für euch eine Puppet-Audienz in Köln.
Darauf, dass nebenbei noch die Vorbereitungen für den ausgebuchten Puppet-Termin zu treffen waren, möchte ich hier nur ganz kurz eingehen. Mein persönliches „Highlight“ dieser Schulungsvorbereitungen bestand ja darin, dass die neuen Schulungsunterlagen doch um einiges umfangreicher waren als erwartet, sie dann nicht komplett in unsere Schulungsordner passten und zudem auch nach einer beinahe 8-stündigen Druckaktion unser Papiervorrat fast vollständig erschöpft war. Das alles ist zwar keine sonderliche Tragödie, hat mich in Kombination mit den oben beschriebenen Schulungsanfragen und dem jetzt gleich im Folgenden beschriebenen Umstand doch das ein oder andere graue Haar gekostet.
Weiter ging es nämlich noch mit einem anderen Puppet-Projekt: den neuen Fortgeschrittenen-Schulungen.
Bis kurz vor Freischaltung der bereits Wochen vorher heimlich angelegten entsprechenden Schulungsseiten war nämlich nicht 100%ig klar, wie die Trainings für Developer überhaupt heißen werden. Mit einer Eilbotschaft aus Amsterdam kam dann endlich die Mitteilung auf die wir schon seit Wochen hingefiebert hatten. Tom und Sebastian waren dort beim train the trainer und mussten mir hoch und heilig versprechen alles in ihrer Macht stehende zu unternehmen um an die letzten Infos zu den Schulungen zu kommen. Kaum kam die erlösende Botschaft ging es hier richtig rund: unsere Grafikerin musste Kurstitel in sämtliche Online- und Printbilderchen zu den Extending Puppet-Schulungen einfügen, ich konnte endlich sämtliche Pressemitteilungen, Newsletter und Schulungsflyer betexten und Markus arbeitete emsig daran die letzten Lücken der Homepage zu füllen.
Übrigens hat trotz widriger Umstände alles geklappt. Für den zusätzlichen Fundamentals-Schulungstermin könnt Ihr euch schon fleißig anmelden, die neuen Schulungen (Puppet Advanced und Extending Puppet) sind auch komplett startklar und unser Papiervorrat ist schon wieder aufgestockt.
Eine gute Basis also um sich wieder der Organisation des Puppet Camps zu widmen. 🙂

Monthly Snap September > SensorProbe 2+, Icinga Director, OSBConf 2017, DevOpsDays, Benchmarking Graphite, OSMC

In September, Isabel started with introducing Intelligente Überwachung mit der AKCP sensorProbe 2+ while Eric shared his tips on Hidden pearls in Icinga Web 2. Nicole shared important information on NETWAYS Web Services on Request Tracker.
Marius told us how VM volumes live works using blkdeviotune and Shopware Update, Julia announced for new upcoming Advanced Puppet training and 7 reasons for join OSBConf. Markus shared Trick 17 with the Icinga Director while Tobias shared Trick 42 with the Icinga Director – Job in order.
Julia Announced OSMC in Hackathon, DevOpsDays in Berlin and continued with reasons for OSBConf 2017,she also  said thank to sponsors of OSBConf.
Blerim told us about Benchmarking Graphite, Nicole reviewed Managed Services team event 2017, And Dirk again shared his insights in The Consultant and The dear Certifications II.

Keya Kher
Keya Kher
Marketing Specialist

Keya ist seit Oktober 2017 in unserem Marketing Team. Nach ihrer Elternzeit ist sie seit Februar 2024 wieder zurück, um sich speziell um Icinga-Themen zu kümmern. Wenn sie sich nicht kreativ auslebt, entdeckt sie andere Städte oder schmökert in einem Buch. Ihr Favorit ist “The Shiva Trilogy”.  

Icinga Director – grafische Konfiguration für alle?

This entry is part 3 of 5 in the series Icinga. Einfach. Erklärt.

Um dir einen reflektierten und ehrlichen Einblick in meine Entscheidungsgrundlage zu geben, gehe ich so vor, als würde ich im Consulting einen Kunden beraten und mit ihm zu einem für ihn passenden Lösungsansatz kommen. Bevor ich die jeweiligen Vor- und Nachteile von Konfigurationsdateien und der grafischen Oberfläche, dem Icinga Director, beleuchte, möchte ich als Einstieg allerdings erst über die Icinga DSL reden. Dies soll dazu dienen, dass Du meine Argumente besser verstehst und nachvollziehen kannst. Nach dem Pro und Kontra werde ich dann mein persönliches Fazit ziehen und Dir verraten, wie ich mich entscheiden würde. Das muss aber nicht der Schluss sein, zu dem Du kommst. Hier darf gerne jede:r mit seiner eigenen Gewichtung zu einem persönlichen Ergebnis kommen. Und eigentlich handelt es sich hierbei nur um ein Zwischenfazit. Denn im Anschluss möchte ich noch auf die Möglichkeiten für eine Automatisierung der Konfiguration eingehen. Und falls Du Automatisierung in Betracht ziehst, wird auch das Deine endgültige Entscheidung maßgeblich beeinflussen. Also, schauen wir uns die Möglichkeiten einmal genauer an!

Icinga DSL

Nun hab ich die Abkürzung DSL bereits zweimal verwendet ohne sie auszuschreiben! Was ich meinen Auszubildenden angekreidet hätte, will ich aber bewusst als Stilmittel verwenden. Denn tatsächlich verwendet Icinga 2 zur Konfiguration nicht eine einfache Konfigurationssprache sondern eine Domain-Specific-Language (DSL). Das Gegenstück wäre eine General-Purpose-Language (GPL) wie beispielsweise YAML. Mit einer solchen ließen sich bestimmt auch alle Monitoring-Objekte abbilden, aber die Icinga DSL erlaubt noch mehr. Dank DSL lassen sich Verzweigungen und Funktionen umsetzen und damit die Konfiguration vereinfachen, was auch die Wartung vereinfacht.

Ein Beispiel für eine Host-Definition:

object Host "localhost" {
  imports "Default Host"
  address = "127.0.0.1"
  vars.os = "Linux"
}

Was aber für mich viel wichtiger ist, ist der Ansatz dahinter. War mit Icinga 1 die Konfiguration noch sehr objekt-basierend, so dass mehr oder weniger jedes Objekt einzeln angelegt und gepflegt werden musste, ist nun die DSL für eine regel-basierte Konfiguration gedacht. Das ermöglicht es, sich Regeln für Überwachung und Benachrichtigung zu überlegen und dann die Host-Objekte mit den passenden Eigenschaften auszustatten, damit die Regeln greifen.

Ein Beispiel für eine solche Regel zur Service-Definition:

apply Service "SSH" {
  import "Default Service"
  check_command = "ssh"

  assign where host.vars.os == "Linux"
}

Auch wenn Du Dich bisher nicht eingehender mit der Icinga DSL befasst hast, kannst Du vermutlich dieses einfache Beispiel nachvollziehen und erkennen, dass für jedes System inklusive unserem „localhost“ mit dem Betriebssystem Linux nun ein Service zur Überwachung des SSH-Diensts erzeugt wird. Natürlich kann es auch durchaus komplexer werden, aber auch das wollen wir vielleicht konfigurieren. Auch für einen komplexeren Befehl möchte ich Dir ein Beispiel geben.

Zeitabhängige Schwellwerte für die Überwachung der Auslastung als Beispiel für komplexere Konfiguration:

apply Service "Load" {
  import "Agent Service"
  check_command = "load"

  vars.load_wload1 = {{
    if (get_time_period("backup").is_inside) {
      return 20
    } else {
      return 5
    }
  }}
  vars.load_cload1 = {{
    if (get_time_period("backup").is_inside) {
      return 40
    } else {
      return 10
    }
  }}

  assign where host.vars.os == "Linux"
}

In diesem Beispiel werden die Schwellwerte für die Auslastung des Systems während der für das Backup definierten Timeperiod hoch gesetzt. Dadurch werden fehlerhaft-positive Alarme vermieden, ohne die Überwachung oder Alarmierung komplett abzuschalten.

Ich hoffe diese kleine Einleitung macht deutlich, was und wie wir aufgrund der Eigenschaften der Icinga DSL konfigurieren müssen. Egal ob in Konfigurationsdateien oder mit Hilfe der grafischen Oberfläche, dem Icinga Director.

Konfigurationsdateien

Der Vorteil von Konfigurationsdateien ist oftmals der „Haben wir schon immer so gemacht“-Faktor. Zwar muss man für den Einstieg die Icinga DSL lernen, aber man kann mit gewohnten Werkzeugen, Strukturen und Arbeitsweisen an die Konfiguration von Icinga herangehen. Auch eine Versionskontrolle mittels Git oder eine Automatisierung mit Ansible oder Puppet ist einfach möglich.

Eine Zusammenarbeit an den Dateien wird schon etwas komplizierter, denn alle müssen das gleiche Verständnis der Struktur mitbringen. Sollen dabei auch noch verschiedene Rollen eingenommen werden, müssen entsprechend feine Dateirechte her oder es braucht zumindest wirklich eine Versionskontrolle und damit verbundene Reviews.

Syntax-Highlighting ist für die wichtigsten Editoren vorhanden, aber trotzdem dürfte das Hauptproblem die Fehleranfälligkeit des Menschen sein. Sowohl syntaktische als auch logische Fehler fallen erst bei der Validierung durch Icinga auf und sind gerade wenn mehrere Personen parallel Änderungen vorgenommen haben auch nicht immer leicht zu finden.

Der größte Vorteil steht dem direkt entgegen, denn ohne eine weitere Abstraktion habe ich direkten und vollen Zugriff auf alle Möglichkeiten der Icinga DSL. Somit sind zahlreiche Anpassungen möglich wie die oben gezeigten zeitabhängigen Schwellwerte, aber noch vieles mehr wie das Erzeugen von Objekten per Schleife auch über komplexe Datenstrukturen oder das Auswerten und Zusammenfassen von bestehenden Checks zu einem Gesamtergebnis. Aber auch ohne die komplexen Beispiele kann eine einfache Ergänzung, wie etwa eine Fallunterscheidung, schon Arbeitserleichterung bringen und doppelte Pflege vermeiden!

Icinga Director

Übersicht des Icinga DirectorsDer Icinga Director als grafisches Frontend zur Konfiguration stellt eine Abstraktion der Icinga DSL dar, denn es müssen natürlich für alle Objekte mit allen Attributen Eingabemasken existieren. Um das noch etwas klarer zu machen, gebe ich Dir einen kurzen Einblick in die Funktionsweise des Icinga Directors. Der Director importiert von einer Icinga-Instanz grundlegende Objekte wie Check-Kommandos, Endpunkte und Zonen. Nach diesem Kickstart musst Du für die allermeisten Objekte zunächst Templates anlegen, wobei direkt Felder für zusätzliche Eigenschaften zu erstellen und anzuhängen sind. Sobald Du auch konkrete Objekte angelegt hast, kannst Du die Konfiguration für Icinga rendern und über den entsprechenden API-Endpunkt produktiv nehmen.

Das heißt auch beim Director können Fehler erst durch die Validierung durch Icinga sichtbar werden. Aber die Eingabemasken reduzieren das Fehlerpotential stark, da Syntax-Fehler weitestgehend ausgeschlossen werden. Bei der Erstellung von Templates, Feldern und Regelwerk kannst Du durch sprechende Namen, Beschreibungen, Filter die nur passende Kombinationen erlauben sowie weitere ähnliche Maßnahmen das Risiko für logische Fehler weiter senken.

Hostansicht im Icinga DirectorsAuf der Trennung von Templates und Objekten baut auch das Rechtesystem des Directors auf, denn der Zwang zur Erstellung von Templates bereitet auch eine entsprechende Rollentrennung vor. So soll gewährleistet werden, dass ein Monitoring-Administrator ganz leicht Vorgaben machen kann und beispielsweise der Linux-Administrator anschließend einfach seine Hosts einpflegen braucht. Wer darauf geachtet hat, dem ist hier mein zögerliches Zugestehen aufgefallen. Denn ein Nachteil, den ich nicht verschweigen möchte, ist leider die Dokumentation des Directors. Alles Grundsätzliche ist in der Dokumentation durchaus enthalten. Manche Details jedoch werden erst durch Ausprobieren klar und Best Practices kristallisieren sich erst mit einiger Erfahrung heraus.

Was erklärt Dir die Dokumentation gut? Komfortfunktionen wie die, dass Du über ein Attribut den Host zu einem Icinga Agenten erklären kannst, finden sich relativ einfach. Die Erklärung, dass es uns Arbeit abnimmt, nochmal separat Endpoint- und Zonen-Objekte für jeden Host zu definieren, findet sich auch. Ebenso ein Hinweis auf die Installations- und Konfigurationshilfe, die sich hinter einem neuen Tab verbirgt. Anderes ist meines Erachtens weniger optimal dokumentiert. Wie ich Checks auf einem anderen Agenten ausführe und was es für das Feature bedeutet, ist dann außer für den erfahrenen Benutzer schwer ersichtlich. Ähnlich geht es mir auch mit anderen Features wie Choices oder Datenfeldkategorien. Diese sind sicher alle optional, dienen jedoch die Benutzerführung zu verbessern und wie bereits angemerkt Fehleranfälligkeiten zu reduzieren.

Auch wenn es nicht ganz offensichtlich ist und die Möglichkeit erst einmal einschränkend wirkt, können mit dem Icinga Director sogar bei Argumenten von Check-Kommandos komplexere Konstrukte mit der Icinga DSL eingebaut werden. Das bedeutet, dass auch das Beispiel mit zeitgesteuerten Schwellwerten möglich ist. Nur muss es halt etwas anders gelöst werden.

Erwähnt werden wollen noch die integrierte CLI und API. Solche Schnittstellen sehe ich immer als Plus. Sie ermöglichen hilfreiche zusätzliche Arbeitsweisen. Die ein oder andere schnelle Schleife über die CLI hat mir schon einiges an Klick-Arbeit gespart.

Zwischenfazit

Für meine eigene kleine Instanz wären wohl Konfigurationsdateien meine erste Wahl, denn ich bin ziemlich schnell im VIM unterwegs, kenne die Icinga DSL doch ganz gut und vor allem bin dann auch nur ich auf dem System unterwegs.

Ansonsten möchte ich Dir aber den Icinga Director ans Herz legen! Mit entsprechender Vorbereitung durch einen erfahrenen Admin oder wenn Du selbst Dir die Zeit nehmen kannst, Dich einzuarbeiten, kannst Du aus dem Director einiges rausholen. Ein großer Vorteil: Du kannst im Director die Arbeit leicht auf mehrere Personen verteilen, ohne dass alle ganz tief in die Materie einsteigen müssen. Das erlaubt es euch, leicht im Team zusammenzuarbeiten und die Abhängigkeit von einzelnen Personen zu reduzieren. Auch die Qualität des Monitorings wird in der Regel besser, wenn Administratoren das Monitoring eigenverantwortlich für ihre Systeme und Dienste pflegen können. Dazu tragen auch die erwähnten Komfortfunktionen und Möglichkeiten zum Aufhübschen bei, denn zumindest ein Umdenken erfordert der Director: Weg von der einfachen Konfiguration, die das primäre Ziel verfolgt,möglichst schnell etwas zu konfigurieren, hin zu einer möglichst übersichtlichen Konfiguration, die leicht zu verstehen und damit auch zu pflegen ist!

Nun fragt sich der eine oder die andere vielleicht, ob er oder sie mit einer Mischung aus beidem nicht die Vorteile beider Welten bekommen kann. Davon möchte ich jedoch abraten! Es ist zwar theoretisch und auch praktisch möglich, erfordert aber definitiv ein sehr tiefes Verständnis. Spätestens bei der Fehlersuche kann dies zum Verhängnis werden. Zudem schränkt es die Möglichkeiten des Directors ein, Objekte aus den Konfigurationsdateien zu verwalten. Du hast beispielsweise nicht mehr die Möglichkeit, wenn Du einen Check-Command importierst, alle Eigenschaften zu pflegen. Gerne behalte die Option im Hinterkopf und denke daran, wenn Du zum Beispiel Check-Kommandos als Konfigurationsdatei beim Plugin mitgeliefert bekommst. Aber bitte plane nicht damit! Daher auch hier meine übliche Empfehlung, dass Du Dich direkt zu Beginn für einen der beiden Wege entscheidest. So ersparst Du Dir später eine Migration und damit einhergehendes Umdenken.

Möglichkeiten der Automatisierung

Automatisierung mit Jobs im Icinga DirectorsFür mich ist schlussendlich meistens nicht entscheidend, wie einzelne Objekte konfiguriert werden können, da ich im Idealfall das Monitoring gar nicht manuell pflegen möchte. Und hier kommt eine der größten Stärken des Directors zum tragen: Der Director bietet die Möglichkeit, Daten aus einer Datenquelle zu importieren und aus diesen Daten dann Monitoring-Objekte zu erzeugen. Dabei können sogar noch Modifikatoren genutzt werden, um die Daten für den Verwendungszweck anzupassen.

Als erstes einfaches Beispiel möchte ich skizzieren, wie ein Import von Benutzern aussehen könnte. Die gleiche LDAP-Ressource, die für die Authentifizierung hergenommen wird, kann im Director als Importquelle verwendet werden. Ich gehe üblicherweise her und erstelle eine erste Import-Regel, die Gruppen importiert, und da hier meist keine Anpassungen nötig sind, kann ich sie direkt zu Usergroups für Icinga synchronisieren.Als zweites erstelle ich eine Import-Regel, die Benutzer importiert, dabei die Gruppenmitgliedschaften filtert und in ein passendes Format bringt, bevor über die Synchronisation daraus User-Objekte werden. Und schon muss ich für Benachrichtigungen nur noch benötigte Templates und die eigentlichen Benachrichtigungen pflegen. Das Management der hierfür benötigten Benutzer und ihrer Gruppen übernimmt das Active Directory, egal ob neue Kolleg:innen, Namensänderungen, Team-Wechsel oder was auch immer anstehen.

Das zweite Beispiel ist in der Praxis oftmals komplizierter. Denn um das Management der Hosts zu automatisieren, braucht es eine geeignete Quelle. Gibt es eine gut gepflegte CMDB (Configuration Management Database) oder Asset Management (oder wie auch immer es im jeweiligen Unternehmen genannt wird)? Perfekt! Eventuell stellst Du fest, dass die Datenqualität nicht so hoch ist, wie Du dies gerne hättest. Und auch hier kommen Modifikatoren zum Einsatz und schaffen Abhilfe. So können etwa alle Hostnamen zum FQDN ergänzt, die Schreibweise beispielsweise des Betriebssystems vereinheitlicht, die fehlende IP-Adresse durch DNS-Abfragen herausgefunden werden oder was sonst noch nötig ist.

Falls Daten fehlen, kannst Du sie aus einer anderen Quelle beziehen, denn viele weitere Module liefern Import-Quellen für den Director. Du kannst Dir etwa Systeminformationen aus dem Konfigurationsmanagement mit Hilfe der PuppetDB oder aus der zugrunde liegenden Plattform wie VMware vSphere oder AWS holen. Und der Vorteil ist: die Daten sind garantiert richtig! Sollten immer noch Daten fehlen, kannst Du diese mit einer eigenen Quelle anreichern. Vielleicht ist die Information schon in einem Excel-Dokument gepflegt oder Du kannst Dir schnell eine CSV-Datei bauen, denn beide Möglichkeiten bringt der Fileshipper. Letzteres nutze ich so regelmäßig, um Standortinformationen anzureichern, dass diese Option sogar als Beispiel in die Schulung Icinga 2 Advanced eingeflossen ist.

Je nachdem wie sehr man dem Automatismus dann vertraut, lässt der Director sich noch weiter automatisieren, so dass Import, Synchronisation und sogar das anschließende Deployment vollautomatisch passiert. Wer im Fehlerfall nicht nachts raus geklingelt werden möchte, kann auch gerne einstellen, dass dies nur während der Arbeitszeit passiert! 😉

Fazit

Mein Zwischenfazit hat ja bereits gezeigt, dass ich zum Director tendiere, selbst wenn es nur um manuelle Konfiguration geht. Aber auch wenn Importe natürlich individuell sind und man sich Konfigurationsdateien anders auch automatisch erstellen kann: hier trumpft der Director wirklich auf! Nicht nur der Workflow ist gut gedacht und vorbereitet, sondern durch die Möglichkeit mit weiteren spezialisierten Modulen, die Zahl der Importquellen und Modifikatoren zu erweitern. Das ist bei Bedarf sogar selbst in wenigen Zeilen zu erreichen. Damit wird der Icinga Director zum ganz klaren Sieger!

Falls Du Dir nun Hilfe bei der Einrichtung des Directors wünscht oder Unterstützung bei der Automatisierung suchst, aber auch wenn Du trotz meiner Ausführungen noch nicht entscheiden kannst, was für Dich der richtige Ansatz ist, melde Dich gerne! Ich oder ein:e Kolleg:in führen gerne eine individuelle Betrachtung zu Deiner IT-Umgebung und ihren Anforderungen durch. Im Rahmen eines solchen Consultingtermins erstellen wir Dir zunächst ein Konzept und können gerne auch direkt mit der Umsetzung beginnen.

Dirk Götz
Dirk Götz
Principal Consultant

Dirk ist Red Hat Spezialist und arbeitet bei NETWAYS im Bereich Consulting für Icinga, Puppet, Ansible, Foreman und andere Systems-Management-Lösungen. Früher war er bei einem Träger der gesetzlichen Rentenversicherung als Senior Administrator beschäftigt und auch für die Ausbildung der Azubis verantwortlich wie nun bei NETWAYS.