Nachdem wir im ersten Teil der Serie mit der Installation des Puppet Masters begonnen haben, fahren wir nun mit der Installation des ersten Clients fort. Ich habe hierzu eine VM installiert mit einem Debian 9. Ziel soll es sein, dass der Client über den Puppet-Agent verwaltet und konfiguriert werden kann.
Download des Paketquellen
Damit der Agent installiert werden kann, muss auf dem System ebenfalls eine neue Paketquelle heruntergeladen und hinzugefügt werden.
wget https://apt.puppetlabs.com/puppet6-release-stretch.deb
Nach dem Download können wir das Paket installieren und ein Update der Paketquellen durchführen.
dpkg -i puppet6-release-stretch.deb
apt update
Nun kann die Installation durchgeführt werden
apt install puppet
Nun können wir den Agenten starten sowie einen Autostart einrichten, damit der Server jedes Mal nach einem System-Neustart auch automatisch gestartet wird.
systemctl start puppet
systemctl enable puppet
Version festpinnen
Wenn man (wie auf dem Master-Server auch) die Version des Agenten festpinnen möchte, kann und sollte dies ebenfalls auf dem Client-System machen, da sonst der Client gegenüber dem Master-Server versionstechnisch aus dem Ruder läuft. Das wäre übrigens auch eine gute Aufgabe für Puppet selbst nach der Installation 😉
puppet help | tail -n 1
nano /etc/apt/preferences.d/00-puppet.pref
Hier kommt der gleiche Eintrag hinein wie auch auf dem Puppet Master
Package: puppet puppet-common puppetmaster-passenger
Pin: version 4.8*
Pin-Priority: 501
Lokale Konfiguration
Nach der Installation fragt der Client per DNS nach dem Namen puppet. Wird dieser korrekt aufgelöst, meldet er sich auch schon direkt am Master und möchte hier akzeptiert und aufgenommen werden. Wird ein anderer Name verwendet oder das DNS ist (aus Gründen TM) nicht änderbar, kann eine lokale Konfiguration in der Datei
/etc/puppet/puppet.conf
durchgeführt werden. Hier muss im Bereich agent eine neue Zeile mit dem Namen des Servers eingeführt werden, weiterhin kann der Bereich master komplett entfernt werden.
Vorher
[main]
ssldir = /var/lib/puppet/ssl
[master]
vardir = /var/lib/puppet
cadir = /var/lib/puppet/ssl/ca
dns_alt_names = puppet
Nachher
[main]
ssldir = /var/lib/puppet/ssl
[agent]
server=servername.domain.local
Danach sollte der Client neugestartet werden.
systemctl restart puppet
Die Signierung und Autorisierung des Clients
Der Client meldet sich nun am Server (zumindest wäre es toll, wenn er das jetzt tun würde) und kann an diesem autorisiert werden.
Wichtig!
Wechsel auf den Puppet Master-Server
Wie schon vorher können wir uns alle Zertifikate anschauen, hier sollte nun ein neues Zertifikat auftauchen.
puppet cert list -all
Wir sehen anhand dem fehlenden „+“ vor dem Server bzw. dem Zertifikat, dass diesem aktuell nicht vertraut wird und es keine Gegenzeichnung von unserem Puppet Master gibt. Wenn man sich übrigens nur die offenen Anfragen anschauen möchte, geht dies am einfachsten ohne die Angabe von „-all„.
Den Client bestätigen können wir mit
puppet cert sign server.domain.local
bestätigen. Nun sind die beiden Server miteinander verbunden und es kann eine Konfiguration erfolgen. Um diesen Teil kümmern wir uns im dritten Teil der kleinen Serie zu Puppet.
Pingback:Dynamische Palo Alto Firewall-Regeln basierend auf Minemeld - Teil 1 - Jans Blog