Automatisierung mit Puppet und Foreman

Puppet und ForemanPuppet ist ein Konfigurationsmanagement-Tool der Firma Puppetlabs, mit dem sich eine große Anzahl von Hosts managen lässt. Die Konfigurationsanweisungen werden in einer eigenen Sprache geschrieben, angelehnt an die Syntax der Nagios Konfiguration. Mit Puppet lässt sich die komplette Konfiguration eines Hosts von Grund auf automatisieren. Von der einfachen Dienstinstallation bis zum automatisierten Setup von Cluster Setups ist nahezu alles möglich.

Der Ablauf für die Aufnahme eines Hosts in das Puppet Konfigurationsmanagement ist üblicherweise wie folgt:

  • Deployment einer neuen VM (z. B. über ein Template)
  • Eventuell manuelle Installation des Puppet Agents (der Puppet Client)
  • Freischaltung des Hosts auf der Puppet CA
  • Anlegen einer Node Definition auf dem Puppetmaster

Foreman integriert sich wunderbar in Puppet und schließt offene Lücken im Automatisierungsprozess. Dazu verwaltet Foreman DHCP, DNS und TFTP Server sowie die Puppet CA und Puppet selbst. Weiterhin kann Foreman sogenannte „Compute Resources“ verwalten und damit virtuelle Maschinen provisionieren. Als Ressourcen werden hier (neben einigen anderen) VMware vSphere oder die Amazon Cloud EC2 unterstützt.

Foreman provisioniert die Maschinen, installiert das Base OS über Kickstart oder preseed, installiert den Puppet Client und signiert das Zertifikat auf der Puppet CA. Weiterhin fungiert Foreman auch als ENC (External Node Classifier). Alle Node Definitionen werden in einer Datenbank gespeichert. Damit entfällt auch der manuelle Eintrag in die site.pp des Puppetmasters. So können auch diverse Abhängigkeitsprobleme gelöst werden. Alle Nodes und deren Klassenzuweisungen können komfortabel über ein Webinterface verwaltet werden. Das Webinterface bietet zudem eine Dashboard Funktion, in der sich Probleme in der Puppet Umgebung schnell erkennen lassen.

Installation

Die Installation kann entweder über einen bereits vorhandenen Puppetmaster oder über den Installer durchgeführt werden. Die Installation über den Installer verläuft komplett automatisch und sehr simpel. Mit übergebenen Parametern lässt sich die Installation individualisieren und die Komponenten z.B. auf verschiedene Server verteilen. Werden keine Parameter angegeben, setzt der Installer alle Komponenten auf dem gleichen System auf. Dies ist gerade für Test-Umgebungen oder POCs optimal. Für eine Automatisierung der Installation samt Anpassung (z.B. über einen bereits bestehenden Puppetmaster) lassen sich alle Installations Parameter auch in einem YAML File unter /etc/foreman/foreman-installer.yaml ablegen.

Der Installer supportet aktuell RHEL6 sowie Derivate dessen (CentOS), Fedora, Debian und Ubuntu. Wir beziehen uns hier auf eine Installation auf Debian 7. Eine Installation von CentOS ist nahezu identisch. Zu beachten ist jedoch das vorher die EPEL Repositorys aktiviert werden müssen.

Foreman ist nicht in den Debian Repositorys enthalten. Daher müssen die direkten Paketquellen von theforeman.org eingebunden werden.

Foreman benötigt mindestens Puppet in der Version 2.6. Grundsätzlich können hier also auch die Puppet Pakete aus den Debian Repositorys verwendet werden. Wir empfehlen jedoch die offiziellen Puppetlabs Repositorys zu verwenden. Diese bieten deutlich aktuellere Pakete und somit auch einige neue Features, die durchaus hilfreich sein können.

Nun kann der Foreman installer geladen und gestartet werden.

Der Installer installiert nun über die jeweilige Paketverwaltung des Systems Puppet und einige weitere Pakete. Anschließend werden die restlichen Schritte und Paketinstallationen über Puppet und „puppet apply“ auf den Host ausgeführt.

Im Anschluss steht bereits eine funktionierende Installation von Foreman auf dem System bereit, die ganz normal über HTTPS auf dem Host erreichbar ist.

Foreman Login PageBevor nun weitere Schritte durchgeführt werden, empfiehlt es sich den Foreman Host gegen seinen eigenen Puppetmaster laufen zu lassen.

Damit hat man direkt seinen ersten Host in der Foreman Datenbank. Vorher ist natürlich noch der entsprechende DNS-Eintrag auf den Foreman Host zu setzen.

Foreman StartseiteForeman bietet neben den bereits angesprochenen noch viele weitere Features (z.B. eine REST API, über die jegliche Daten aus der Foreman Datenbank abgefragt werden können oder ein Dashboard mit den Status des letzten Runs der Puppet Clients). Foreman ist daher eine sinnvolle Ergänzung zu einer neuen oder bereits bestehenden Puppet Infrastruktur.

Haben Sie Fragen zu Puppet oder Foreman? Benötigen Sie Hilfe bei der Implementation oder Planen Sie aktuell eine Automatisierung für Ihre Umgebung einzuführen? Nehmen Sie mit uns Kontakt auf. Wir unterstützen Sie gerne bei Ihrem Vorhaben.

Simon Lauger

Simon Lauger ist seit Juli 2014 für die Firma teamix GmbH tätig. Er betreut bei uns die Themen Citrix und OpenSource. Im Bereich Citrix ist er Ansprechpartner für alle Lösungen mit dem Produkt Citrix NetScaler. Im OpenSource Bereich kümmert er sich um die Automatisierung von Umgebungen mittels Puppet. Vor seiner Zeit bei teamix war Simon bereits für einen großen Nürnberger Hoster tätig und kennt daher die Anforderungen von kritischen und hochverfügbaren IT-Projekten.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar