Seite wählen

NETWAYS Blog

Reminder für das morgige Puppet Webinar

puppetUnsere Webinare erfreuen sich immer größerer Beliebtheit – trotzdem wollen wir es uns nicht nehmen lassen, kurz vorher noch einmal einen Reminder rauszuschicken!
Morgen früh um 10:30 Uhr, werden Markus und ich ein weiteres Puppet Webinar halten – diesmal aber mit dem Thema „Puppet: Aufbau einer Open Source Umgebung“, in dem wir uns näher mit Foreman beschäftigen wollen.
Bei Interesse sollte man sich gleich registrieren! Wer bisherige Webinare verpasst hat und es noch nicht kennt: Einfach in unserem Webinar Archiv vorbeischauen!
Übrigens: Als Vorbereitung empfiehlt es sich, die beiden bisherigen Puppet-Webinare Konfigurationsmanagement mit Puppet und Puppet: Aufbau einer Puppet Enterprise Umgebung anzusehen, um sich einen besseren Überblick über Puppet selbst zu verschaffen.
Wir freuen und schon auf morgen!

Christian Stein
Christian Stein
Manager Sales

Christian kommt ursprünglich aus der Personalberatungsbranche, wo er aber schon immer auf den IT Bereich spezialisiert war. Bei NETWAYS arbeitet er als Manager Sales und berät unsere Kunden in der vertrieblichen Phase rund um das Thema Monitoring. Gemeinsam mit Georg hat er sich Mitte 2012 auch an unserem Hardware-Shop "vergangen".

Parametrisierte Klassen mit Foreman

Wenn in den Einstellungen Parametrized_Classes_in_ENC für Puppet auf true gesetzt ist, unterstützt Foreman parametrisierte Klassen. Weitere Grundvoraussetzung ist außerdem das Foreman einen Puppetmaster als Smart Proxy angebunden hat und auf dessen Puppetmodule zugreifen kann.
Somit können die Puppet Klassen vom Puppetmaster importiert werden:
Bildschirmfoto vom 2014-04-28 07:23:03
Innerhalb einer Klasse kann Foreman sich bei den Parametern dann über die Klassenvorgabe hinwegsetzen (= „Override“). Wie im folgenden Beispiel anhand der Klasse ntp mit dem Parameter servers gezeigt, empfiehlt es sich entsprechende Standardvorgaben zu setzen:
Bildschirmfoto vom 2014-04-28 07:38:03
Ergänzend dazu können für einzelne Hosts über FQDN, Hostgruppe oder anderen Kriterien abweichende Werte festgelegt werden. Foreman bietet dazu an verschiedenen Stellen des Webinterfaces Möglichkeiten dies zu tun.
Bildschirmfoto vom 2014-04-28 07:45:41
Nebenan ein exemplarisches Beispiel für geänderte NTP-Server innerhalb der Puppet Klasse.
Hier werden für die Hostgruppen CentOS und Debian abweichende Werte hinterlegt. Bei Systemen die keine Zuordnung zu den beiden Hostgruppen haben, greift die zuvor gesetzte Standardvorgabe.
Wichtig ist zudem das die jeweilige Puppet Klasse den entsprechenden Hosts auch zugewiesen wird. Auch dies kann bei Foreman an verschiedenen Stellen, z.B. direkt im Host oder der Hostgruppe, erfolgen.
Mit parametrisierten Klassen über Foreman ist es somit möglich individuelle Konfigurationen unabhängig von site.pp & Co. zu definieren und diese an zentraler Stelle übersichtlich zu verwalten.

Markus Waldmüller
Markus Waldmüller
Head of Strategic Projects

Markus war bereits mehrere Jahre als Sysadmin in Neumarkt i.d.OPf. und Regensburg tätig. Nach Technikerschule und Selbständigkeit ist er nun Anfang 2013 bei NETWAYS als Senior Manager Services gelandet. Seit September 2023 kümmert er sich bei der NETWAYS Gruppe um strategische Projekte. Wenn er nicht gerade die Welt bereist, ist der sportbegeisterte Neumarkter mit an Sicherheit grenzender Wahrscheinlichkeit auf dem Mountainbike oder am Baggersee zu finden.

Puppet External Node Classifier

Mit Hilfe von Puppet – einem Open Source Configuration Management System – ist es möglich Clients, Server und virtuelle Maschinen effizient zu installieren, verwalten und zu administrieren. Systeme, die von Puppet verwaltet werden, werden über sogenannte „Node-Definitionen“  in Puppet bekannt gemacht und erhalten hierüber ihre Konfiguration in Form von angefertigten Modulen, Klassen und Ressourcen.

node beispielserver.domain.de {
  include beispielklasse
}

Reguläre Ausdrücke werden ebenfalls unterstützt, um z.B. alle „beispielserver123.domain.de“ zusammenzufassen.

node /beispielserver\d+.domain.de/ {
  include beispielklasse
}

In manchen Fällen kann es jedoch auch sinnvoll sein, seine Hosts aus externen Quellen (LDAP, MySQL, usw.) zu beziehen. Zum Beispiel mit einer im Unternehmen bereits existierende CMDB. Puppet bietet mit „External Node Classifier“ (ENC) die Möglichkeit, externe Quellen abzufragen. Um ENC zu aktivieren, muss die Puppetkonfigurationsdatei puppet.conf um zwei Zeilen angepasst werden.

[master]
node_terminus = exec
external_nodes = /usr/local/bin/puppet_node_classifier

Anschließend wird Puppet seine Hosts nicht mehr in seiner statischen site.pp suchen, sondern übergibt den anfragenden Hostname an das Skript unter dem angegebenen Pfad. Das Skript kann ebenfalls wie Puppet in Ruby geschrieben sein oder in einer anderen Skript- oder Programmiersprache die YAML unterstützten, z.B Perl, C, PHP u.v.m.
Die Ausgabe des Skripts an stdout in YAML formatiert sieht wie folgt aus und entspricht der Node-Definition im erst genannten Beispiel:

---
classes:
- beispielklasse
...

Außerdem muss das Skript als Return-Status „0“ zurückgeben, damit Puppet die Katalogzuweisung erfolgreich durchführen kann und der Host entsprechend der Anweisungen konfiguriert werden kann.

Sebastian Saemann
Sebastian Saemann
CEO Managed Services

Sebastian kam von einem großen deutschen Hostingprovider zu NETWAYS, weil ihm dort zu langweilig war. Bei uns kann er sich nun besser verwirklichen, denn er leitet das Managed Services Team. Wenn er nicht gerade Cloud-Komponenten patched, versucht er mit seinem Motorrad einen neuen Rundenrekord aufzustellen.