Skip to content

Konfigurations-Management mit Puppet

In LogoDIDACT 4.0 stehen mittlerweise etwa 30 Module als einzelne Container zur Verfügung. Würde man diese manuell pflegen käme dies einer Mammutaufgabe gleich. Zumal auch berücksichtigt werden muss, dass mit wachsender Anzahl das System komplexer und Änderungen schwieriger nachzuvollziehen sind, besondern wenn mehrere Personen einen LD-Server pflegen. Daher wird in LogoDIDACT ein Konfigurationsmanagement auf Basis des OpenSource-Systems Puppet (deutsch: Puppe oder Marionette) genutzt, um die große Anzahl an virtuellen Servern weiterhin einfach und zentral konfigurieren zu können. Das Grundprinzip ist, dass Anpassungen nicht innerhalb der jeweiligen Container bzw. LXCs, sondern im Konfigurations-Managementsystem durchgeführt werden.

Info

Eine Ausnahme bildet hier der Container logosrv, welcher nicht von Puppet verwaltet wird. Auf Dauer werden die einzelnen Funktionen des logosrv losgelöst und auf andere LXCs ausgelagert.

Grundlagen zu Puppet

Puppet Komponenten

Wie oben erwähnt, hält der puppeteer (Puppenspieler) sinnbildlich die Fäden in der Hand und bestimmt, welche Aufgaben auf dem ldhost oder seiner virtuellen LXCs zu erledigen sind. Die Anweisungen werden dabei über so genannte Puppet-Rezepte verteilt und über Puppet-Agents entgegengenommen. Neben dem puppeteer sind eine ganze Reihe weiterer Komponenten mit im Spiel, von denen nur die wichtigsten dargestellt werden sollen. Es ist aber in jedem Fall sehr wichtig zu wissen, wie die Konfiguration von Parametern in einem Container von LogoDIDACT 4.0 abläuft. Dies ist in der folgenden Abbildung grob dargestellt:

puppet uebersicht

Die Puppet-Agents liefern dem Puppet-Master Fakten, wie z.B. über die vorhandene Hardware, d.h. die Größe des Hauptspeichers oder den Festplattenplatz. Weiterhin liefern sie ihm auch Infos zu erfolgreich erreichten Zuständen oder über Fehlschläge. Der Puppet-Master verwertet diese Fakten zusammen mit Manifesten, in denen Zustände definiert sind. Aus Fakten und Manifesten generiert (compiliert) der puppeteer den Katalog. Darin befinden sich dann konkret die Anweisungen für die verschiedenen jeweiligen Agenten.

Arbeitsweise von Puppet

Was in und mit Puppet tatsächlich alles geschieht, lässt sich nur schwer erklären und erfordert tiefergehendes Verständnis. Im Normalfall ist dieses tiefere Wissen jedoch nicht erforderlich. Wichtig zu wissen hingegen ist, wie puppet grundsätzlich arbeitet und man bei einer Konfigurationsanpassung oder einem auftretenden Fehler versteht, was im Hintergrund passiert.

  • Sowohl im Host als auch in jedem Container (mit Ausnahme des logosrv) läuft ein puppet-Agent
  • Der puppeteer wird auch Puppet-Master genannt
  • Puppet arbeitet „unsichtbar“ im Hintergrund
  • Der puppeteer ist die zentrale Stelle in LogoDIDACT 4.0 für sämtliche Konfigurationsaufgaben
  • Puppet arbeitet asynchron, d.h. die Agenten melden sich zyklisch alle 10 bis 20 Minuten (konfigurierbar) beim puppeteer
  • puppet-Rezepte befinden sich im Container puppeteer-g3 im Verzeichnis /opt/ld/puppet

Puppet Tools und Befehle

Das Tool pstat

Da Puppet weitestgehend im Stillen und unsichtbar arbeitet, wurde von SBE das Tool pstat (Abkürzung für puppet status) entwickelt. Dieses Tool läuft nur im Container puppeteer-g3 und gibt einen Überblick über den Status der Puppet-Agents. Über verschiedene Schalter besteht zudem die Möglichkeit die Ansicht oder den Aktualisierungszeitraum anzupassen.

pstat

Spalte Beschreibung
Nr aufsteigende Nummer des puppet-Agents
Host Bezeichnung des ldhost
Container Bezeichnung des Containers
prun Zustand des puppet-Agents
Status letzter Status des puppet-Agents
Changend Anzahl der umgesetzten Änderungen
Delta
Last executed letzte Ausführung des puppet-Agents
Last duration Laufzeit des letzten Durchlaufs des puppet-Agents

Der Befehl prun

Die Eingabe des Befehls prun in einem Container oder im Host prüft zunächst, ob nicht gerade schon ein automatischer Durchlauf des Puppet Agents stattfindet. Ist das nicht der Fall, startet der puppet-Agent und verbindet sich mit dem Puppetmaster, um etwaige Änderungen sofort mitzubekommen und in Form einer Catalog-Datei abzuholen. Das ist z.B. bei der Installation eines neuen Containers hilfreich, wenn der Aufbau mehrere prun-Durchläufe benötigt und man diesen Prozess gezielt beschleunigen möchte.

Agent Befehle pdis und pena

Für Diagnose- und Testzwecke ist es hilfreich, wenn man den puppet-Agent vorübergehend deaktivieren kann. Der Befehl pdis steht für puppet agent disable und deaktiviert den puppet-Agent im jeweiligen Container. Dementsprechend steht pena für puppet agent enable und (re)-aktiviert den puppet-Agent im jeweiligen Container.