bluebay2014 - Fotolia

Einstieg in die Rechenzentrums-Automatisierung mit Puppet

Viele Unternehmen setzen bei der Automatisierung im Rechenzentrum auf Puppet. Wir zeigen in diesem Beitrag die Installation und Grundeinrichtung.

Puppet ist eine Open-Source-Automatisierungslösung für Konfiguration und Continuous Delivery und findet vor allem im DevOps-Bereich Anwendung. Wir zeigen nachfolgend die Vorbereitungen und Installation auf Ubuntu 20.04 sowie erste Schritte, die Sie mit der Automatisierungslösung durchführen können.

Voraussetzungen für den Betrieb von Puppet installieren

Für den ersten Einsatz ist es sinnvoll zwei Linux-Computer zu verwenden. Ein Computer wird als Puppet-Server betrieben, der andere als Client. Auf beiden Computern sollte zunächst eine Aktualisierung von allen Paketen mit sudo apt-get update -y vorgenommen werden.

Für eine optimale Kommunikation kann es sinnvoll sein, dass Sie auf den beiden Computern in der Host-Datei die Namen für den Zugriff vorgeben. Arbeiten Sie in einem Netzwerk mit einer sauberen DNS-Lösung (Domain Name System) ist das nicht erforderlich, es schadet aber auch nicht, wenn die Servernamen in der Hosts-Datei parallel gepflegt werden, vor allem beim Aufbau einer Testumgebung.

Sie öffnen die Datei mit folgendem Befehl zum Bearbeiten:

sudo nano /etc/hosts

Tragen Sie in zwei Spalten die IP-Adressen und die Namen der beiden Computer ein, zum Beispiel:

192.168.1.30 puppetmaster puppet

192.1168.1. puppetclient

Speichern Sie die Datei. Ob die Namensauflösung funktioniert, können Sie zum Beispiel mit ping puppetmaster und ping puppetclient testen. Wenn Sie mehrere Namen für eine IP-Adresse hinterlegt haben, wie im oberen Beispiel, dann sollte auch ping puppet funktionieren.

Puppet installieren und einrichten

Danach installieren Sie zunächst den Puppet-Server. Damit das funktioniert, muss das Repository für Puppet auf Ubuntu 20.04 hinzugefügt werden. Danach aktualisieren Sie wieder das Repository und installieren Puppet:

wget https://apt.puppet.com/puppet7-release-focal.deb

sudo dpkg -i puppet7-release-focal.deb

sudo apt-get update -y

sudo apt-get install puppetserver -y

Nach der Installation sollten Sie noch die Process Memory Allocation anpassen. Dazu wird die Puppet-Konfigurationsdatei geöffnet, zum Beispiel mit:

sudo nano /etc/default/puppetserver

Hier sollten Sie die folgende Zeile so abändern, wie nachfolgend zu sehen:

JAVA_ARGS="-Xms1g -Xmx1g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"

Diese Einstellung wird von vielen Puppet-Spezialisten empfohlen, auch auf anderen Linux-Distributionen. Nach der Installation können Sie Puppet starten und so konfigurieren, dass es immer beim Start des Betriebssystems hochfährt:

sudo systemctl start puppetserver

sudo systemctl enable puppetserver

Der Status des Dienstes kann mit dem folgenden Befehl abgerufen werden:

sudo systemctl status puppetserver

Puppet-Agent installieren

Zeigt die Ausgabe, dass Puppet gestartet ist, können Sie fortfahren. Um die Funktionen des Servers zu testen, installieren Sie als nächstes auf dem Client-Computer den Agenten für Puppet. Auch hier muss das Repository zunächst hinzugefügt werden. Danach erfolgt die Installation des Puppet-Agenten:

wget https://apt.puppet.com/puppet7-release-focal.deb

sudo dpkg -i puppet7-release-focal.deb

sudo apt-get update -y

sudo apt-get install puppet-agent -y

Anschließend machen Sie sich an das Einrichten des Agenten. Dazu öffnen Sie die Konfiguration und tragen die Daten des Puppet-Masters ein:

sudo nano /etc/puppetlabs/puppet/puppet.conf

Tragen Sie folgende Zeilen ein. Diese sollten mit den Namen übereinstimmen, die Sie im ersten Schritt für die beiden Computer festgelegt haben:

[main]

certname = puppetclient

server = puppetmaster

Anschließend kann Puppet starten und auch auf dem Clienten für den Systemstart gemeinsam mit dem Betriebssystem konfiguriert werden. Danach überprüfen Sie auch hier, ob der Dienst läuft.

sudo systemctl start puppet

sudo systemctl enable puppet

sudo systemctl status puppet

Nach Änderungen an der Konfigurationsdatei kann der Dienst mit sudo systemctl stop puppet beendet und mit sudo systemctl start puppet gestartet werden.

Zertifikate steuern und Fehler beheben

Auf dem Host werden mit dem folgenden Befehl die Zertifikate angezeigt. Hier sind auch Certificate Signing Requests (CSR) zu sehen:

/opt/puppetlabs/bin/puppetserver ca list

Mit /opt/puppetlabs/bin/puppetserver ca sign –all werden die Anfragen signiert. Danach können Sie auf dem Client den Agenten testen:

/opt/puppetlabs/bin/puppet agent --test

Funktioniert die Kommunikation nicht, können Sie mit dem folgenden Befehl ausführlichere Analysen über den Zustand von Puppet auf dem Server anzeigen lassen:

sudo /opt/puppetlabs/bin/puppetserver foreground &

Ob der Server auf dem Port aktiv ist, kann das Netstat mit dem Befehl netstat -nl | grep -E "(Proto|8140)" überprüfen. Ist Netstat auf dem Server nicht verfügbar, installieren Sie das Tool mit sudo apt install net-tools. Wenn die Verbindung zwischen Puppet-Clients und Puppet-Master nicht funktioniert, liegt es meistens daran, dass die Kommunikation zwischen Agent und Master über den Port 8140 nicht funktioniert. Hier ist der Port entweder auf dem Master falsch konfiguriert, oder eine Firewall blockiert den Zugriff.

Puppet und CentOS

Der Support für CentOS 8 wird 2021 eingestellt. Wer das Betriebssystem im Moment benutzt, kann Puppet auch hier einsetzen. Wie bei Ubuntu müssen Sie das Repository zunächst hinzufügen. Abhängig von der Konfiguration der Rechner müssen Sie mit sudo arbeiten.

dnf install https://yum.puppetlabs.com/puppet-release-el-8.noarch.rpm

Danach erfolgt die Installation des Puppet-Servers mit:

dnf install puppetserver

Anschließend können Sie Puppet mit seinem integrierten Verwaltungstool puppet aktualisieren, starten und, wie bei Ubuntu, in den Autostart aufnehmen:

puppet resource package puppetserver ensure=latest

systemctl start puppetserver

systemctl enable puppetserver

Danach ist der Server aktiv und Sie können Puppet auf den Clients installieren. Das funktioniert in CentOS mit:

dnf install puppet

puppet resource package puppet ensure=latest

systemctl start puppet

systemctl enable puppet

Erfahren Sie mehr über Server- und Desktop-Virtualisierung