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