In diesem dritten Teil der Blogserie haben wir bereits durch Teil 1 und Teil 2 eine Verbindung zwischen unserem Puppet Master und einem Client. Nun werden wir uns anschauen, wie wir eine Administration des Clients machen können und welche Möglichkeiten Puppet bietet.
Der erste Test
Um zu prüfen, ob der Puppet-Client korrekt funktioniert und auch genau das umsetzt, was wir von ihm möchten, testen wir unseren Aufbau im ersten Schritt. Hierzu erstellen wir eine neue Datei auf dem Puppetmaster und füllen diese mit Leben.
mkdir -p /etc/puppet/code/environments/production/manifests
nano /etc/puppet/code/environments/production/manifests/puppetclient1.pp
In diese Datei müssen wir nun aufnehmen, welche Dinge durchgeführt werden sollen. Im ersten Schritt legen wir einfach eine neue Test-Datei unter /tmp an.
node 'puppetclient1.domain.local' {
file { '/tmp/test':
ensure => 'present',
content => "Hallo Welt\n",
mode => '644',
}
}
Die erste Zeile sorgt dafür, dass die folgenden Befehle nur auf dem definierten Server gemacht werden, nicht bei allen Systemen. Soll die gewünschte Änderung bei allen Systemen durchgeführt werden, kann die erste und die letzte Zeile einfach weggelassen werden, alternativ ersetzen wir den spezifischen Hostnamen durch default.
Auf dem Client können wir nun manuell einen Abgleich des Puppet-Agent starten. Dies geschieht über den Aufruf von
puppet agent --test
Dies ist nicht ein Test, wie der Name vielleicht vermuten lässt, sondern ein vollständiger Durchlauf inkl. Ausführung von möglichen Änderungen.
Möchte man nun am Ende der Datei noch eine neue Zeile einfügen, kann man die manifest-Datei anpassen und einen erneuten Abgleich machen. Ist dieser passiert, sieht man die gemachten Änderungen und danach in meinem Screenshot die Änderung an der Datei.
Die Installation von Paketen
Soll die Installation von einem oder mehreren Paketen durchgeführt werden, kann dies mit der folgenden Syntax erreicht werden.
package { 'htop':
ensure => installed,
}
Die Arbeit mit Modulen und Klassen
Sobald eine Puppet-Installation etwas größer wird, sollte man sich unbedingt daran gewöhnen, mit Modulen und Klassen zu arbeiten. Dies macht die Arbeit deutlich einfacher, weiterhin gibt es ganz viele vorgefertige und gute Module unter forge.puppet.com.
Eine komplette Beschreibung, was genau Module sind, wie sie anzuwenden sind usw., würde an dieser Stelle absolut den Rahmen sprengen. Mir selbst haben bei dieser Arbeit die folgenden Seiten und Beiträge geholfen:
bogotobogo.com: Packages, Files, and Services
bogotobogo.com: Classes and Modules
root@home: Puppet Master und Client installieren und konfigurieren
und natürlich die Docs von Puppet.com selbst (hier nur ein Beispiel für Klassen, links ist ein Menü mit allen weiteren Punkten und Hilfen)