So installierst du Puppet Server und Agent auf AlmaLinux 9

Puppet ist ein zentrales Konfigurationsmanagement- und Automatisierungstool. DevOps schafft ein Konfigurationsmanagement für die Bereitstellung von Servern und Anwendungen, und alle Konfigurationen für die Automatisierung werden auf dem zentralen „Puppet Server“ gespeichert. Danach ziehen die „Agent“-Knoten eine neue Konfiguration vom „Puppet Server“ und wenden den Zustand wie definiert an.

Alle Verbindungen zwischen „Puppet Server“ und „Agent“-Knoten werden standardmäßig mit einem SSL/TLS-Zertifikat verschlüsselt. Puppet verwendet eine domänenspezifische Sprache (Domain Specific Language, DSL) zur Beschreibung der Systemkonfiguration, die der Syntax von Ruby ähnelt.

Diese Anleitung zeigt dir, wie du Puppet Server und Agent auf AlmaLinux Servern installierst. Außerdem zeigen wir dir, wie du mit dem Puppet-Konfigurationsmanagement-Tool beginnst, indem du die erste Puppet-Bereitstellung für den LAMP-Stack erstellst.

Voraussetzungen

Vergewissere dich, dass du die folgenden Voraussetzungen hast, bevor du beginnst:

  • 2 AlmaLinux Server – In diesem Beispiel werden AlmaLinux 8 Server verwendet:
    • Hostname: pp-server– IP-Adresse: 192.168.10.20 – Verwendet als: Puppet Server
    • Hostname: agent1 – IP-Adresse: 192.168.10.21 – Verwendet als: Puppet Agent
  • Ein Nicht-Root-Benutzer kann sudo ausführen, um die Root-Rechte zu erhalten.

Einrichten der Datei /etc/hosts

Bevor du mit der Puppet-Installation beginnst, solltest du einen lokalen Domainnamen oder FQDN (Fully Qualified Domain Name) anstelle einer IP-Adresse für die Puppet-Umgebung verwenden.

In diesem Beispiel wirst du das System fqdn sowohl für den Puppet Server als auch für den Agenten verwenden. Jeder Server ist über fqdn und den System-Hostnamen erreichbar.

Um zu beginnen, führe den folgenden Befehl aus, um fqdn auf jedem Server einzurichten.

Führe ihn auf dem Puppet Server aus.

sudo hostnamectl set-hostname pp-server.hwdomain.lan

Und dies auf dem Agent-Rechner.

sudo hostnamectl set-hostname agent1.hwdomain.lan

Öffne die Datei /etc/hosts mit dem unten stehenden Befehl nano editor.

sudo nano /etc/hosts

Füge die folgende Konfiguration ein und achte darauf, dass du die detaillierte IP-Adresse und den fqdn änderst.

192.168.10.20   pp-server.hwdomain.lan   pp-server
192.168.10.21   agent1.hwdomain.lan    agent1

Speichere und schließe die Datei.

Als Nächstes führst du den folgenden Befehl aus, um den fqdn sowohl auf dem Puppet Server als auch auf dem Agenten zu überprüfen.

sudo hostname -f

Du solltest den fqdn auf dem Puppet Server als pp-server.hwdomain.lan und für den Agent als agent1.hwdomain.lan erhalten.

Führe abschließend den folgenden Ping-Befehl aus, um sicherzustellen, dass jeder Hostname und fqdn auf die richtige interne IP-Adresse des Servers zeigen.

ping -c3 pp-server.hwdomain.lan
ping -c3 pp-server
ping -c3 agent1.hwdomain.lan
ping -c3 agent1

Richte Hostname und fqdn auf dem Puppet Server ein.

setup hostname fqdn

Richte Hostname und fqdn auf dem Puppet Agent ein.

setup hostname fqdn

Puppet installieren

In diesem Abschnitt beginnst du mit der Installation von Puppet Server und Agent. Du richtest das Puppet Repository sowohl auf dem Puppet Server als auch auf dem Agent ein und installierst dann das jeweilige Puppet Paket auf jedem Rechner.

Hinzufügen des Puppet-Repositorys

Achte darauf, dass du diesen Befehl sowohl auf dem Puppet Server als auch auf dem Agent ausführst.

Füge das Puppet Repository mit folgendem Befehl sowohl zum Puppet Server als auch zum Agent hinzu.

sudo rpm -Uvh https://yum.puppet.com/puppet7-release-el-8.noarch.rpm

Sobald das Repository hinzugefügt ist, führe den Befehl dnf aus, um die Liste der verfügbaren Repositories auf beiden Servern zu überprüfen.

sudo dnf repolist

Du solltest das Puppet-Repository in der Repository-Liste sehen.

Puppet-Repository hinzufügen

Installieren und Konfigurieren von Puppet Server

Sobald das Repository hinzugefügt ist, kannst du die Installation von Puppet Server starten.

Führe zunächst den Befehl dnf aus, um das Paket puppetserver auf dem pp-server zu installieren.

sudo dnf install puppetserver

Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER, um fortzufahren.

Puppetserver installieren

Gib außerdem y ein, wenn du den GPG-Schlüssel des Puppet-Repositorys hinzufügen willst.

gpg-Schlüssel importieren

Nachdem die Installation abgeschlossen ist, führe den folgenden Befehl aus, um das Puppet-Systemprofil in dein System zu laden. Überprüfe dann die Umgebungsvariable PATH, um sicherzustellen, dass das Verzeichnis Puppet Server bin hinzugefügt wurde.

source /etc/profile.d/puppet-agent.sh
echo $PATH

Wenn dies der Fall ist, solltest du sehen, dass das Verzeichnis /opt/puppetlabs/bin im System-PATH verfügbar ist.

Als Nächstes führst du den folgenden Befehl aus, um die Puppetserver-Binärdatei zu finden und die Puppsetserver-Version zu überprüfen.

which puppetserver
puppetserver -v

In dieser Ausgabe solltest du sehen, dass die Puppetserver-Binärdatei unter /opt/puppetlabs/bin/puppetserver verfügbar ist. Und der aktuell installierte Puppetserver ist v7.11.

Puppetserver überprüfen

Installation des Puppet-Agenten

Jetzt kannst du den Puppet Agent auf dem Rechner agent1.hwdomain.lan installieren.

Führe auf dem Agent-Rechner den folgenden Befehl aus, um das Paket puppet-agent zu installieren. Gib y ein, wenn du dazu aufgefordert wirst, und drücke ENTER.

sudo dnf install puppet-agent

Puppet Agent installieren

Gib außerdem erneut y ein, um den GPG-Schlüssel des Puppet-Repositorys hinzuzufügen.

gpg-Schlüssel importieren

Nachdem puppet-agent installiert ist, führe den folgenden Befehl aus, um das Puppet-Systemprofil in deine aktuelle Sitzung zu laden. Überprüfe dann die Umgebungsvariable PATH des Systems.

source /etc/profile.d/puppet-agent.sh
echo $PATH

Wenn das Puppet-Systemprofil geladen ist, solltest du das Verzeichnis /opt/puppetlabs/bin im Systempfad finden.

Führe den folgenden Befehl aus, um die Puppet-Binärdatei zu finden und die Puppet-Agent-Version zu überprüfen.

which puppet
puppet -v

Du solltest sehen, dass sich die Puppet-Binärdatei unter /opt/puppetlabs/bin/puppet befindet und die Puppet-Agent-Version v7.11 ist.

Puppet Agent überprüfen

Führe abschließend den Befehl systemctl aus, um den Puppet-Dienst auf dem Agent-Rechner zu starten und zu aktivieren.

sudo systemctl start puppet
sudo systemctl enable puppet

Führe dann den folgenden Befehl aus, um sicherzustellen, dass der Puppet-Dienst läuft.

sudo systemctl status puppet

Wenn alles gut läuft, solltest du die folgende Ausgabe sehen:

Puppendienst überprüfen

Puppet Server konfigurieren

Wenn sowohl Puppet Server als auch Agent installiert sind, musst du im nächsten Schritt die Puppet Server-Installation konfigurieren. Du legst den Standard-Servernamen für Puppet Server fest, richtest das Laufintervall für die Agenten ein und startest und aktivierst den Puppet Server-Dienst.

Öffne zunächst die Datei /etc/sysconfig/puppetserver mit dem Editor vim.

sudo nano /etc/sysconfig/puppetserver

Erhöhe im Parameter JAVA_ARGS die maximale Speicherzuweisung für Puppet Server. Diese Konfiguration hängt von deinem aktuellen Systemspeicher ab. In diesem Beispiel hat der Puppet Server 4 GB Speicher und es werden 2 GB für Puppet Server zugewiesen.

# Modify this if you'd like to change the memory allocation, enable JMX, etc
JAVA_ARGS="-Xms2g -Xmx2g"

Speichere die Datei und schließe den Editor, wenn du fertig bist.

Führe nun den folgenden Puppet-Befehl aus, um den Standard-Servernamen in pp-server.hwdomain.lan und das Runinterval in 1 Stunde zu ändern. Der Parameter runinterval gibt an, wie oft Agent die Puppet-Kataloge anwendet.

puppet config set server pp-server.hwdomain.lan --section main
puppet config set runinterval 1h --section main

Als Nächstes führst du den folgenden Befehl aus, um die Standardumgebung auf Produktion und die alternativen Namen für den Puppet Server auf pp-server und pp-server.hwdomain.lan einzustellen.

puppet config set environment production --section server
puppet config set dns_alt_names pp-server,pp-server.hwdomain.lan --section server

Puppet Server konfigurieren

Sobald diese Puppet-Befehle ausgeführt wurden, werden die Einstellungen in der Standardkonfiguration von Puppet /etc/puppetlabs/puppet/puppet.conf gespeichert. Führe den folgenden Befehl aus, um den Inhalt der Datei /etc/puppetlabs/puppet/puppet.conf anzuzeigen.

cat /etc/puppetlabs/puppet/puppet.conf

Du solltest eine ähnliche Konfiguration wie diese erhalten:

generierte Konfiguration Puppet Server

Führe nun den folgenden Befehl aus, um den systemd Manager neu zu laden.

sudo systemctl daemon-reload

Starte und aktiviere dann den Puppetserver-Dienst mit dem folgenden systemctl-Befehl.

sudo systemctl start puppetserver
sudo systemctl enable puppetserver

Sobald der Puppetserver gestartet ist, führe bitte den folgenden Befehl aus, um ihn zu überprüfen.

sudo systemctl status puppetserver

Wenn der Puppetserver läuft, solltest du eine Ausgabe wie diese erhalten:

start verify puppet server

Firewalld auf dem Puppetserver konfigurieren

Nachdem du den Puppet Server konfiguriert hast, musst du den Port 8140 auf dem Puppet Server öffnen und deinem Netzwerk den Zugriff darauf erlauben. Jetzt richten wir die Firewalld ein und öffnen Port 8140 auf der pp-server.hwdomain.lan.

Führe den folgenden Befehl aus, um dein lokales Netzwerk zur Firewalld hinzuzufügen und den TCP-Port 8140 zu öffnen, den Puppet Server verwenden wird.

sudo firewall-cmd --add-source=192.168.10.0/24 --permanent
sudo firewall-cmd --add-port=8140/tcp --permanent

Lade dann die Firewalld neu und überprüfe die Liste der aktivierten Regeln mit dem folgenden Befehl.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Du solltest sehen, dass das Netzwerk 192.168.10.0/24 zur Firewalld hinzugefügt wurde und Port 8140 in der Firewalld verfügbar ist.

Registrierung des Puppet Agents beim Puppet Server

In diesem Abschnitt geht es darum, den Puppet Agent zum Puppet Server hinzuzufügen und zu registrieren. Du registrierst die agent.hwdomain.lan auf dem Puppet Server pp-server.hwdomain.lan.

Befolge dazu die folgenden Schritte:

  • Lege den Standard-Puppet Server auf der Agentenseite fest und starte den Puppet Agent neu.
  • Initialisiere die Zertifikatssignierungsanforderung vom Puppet Agent.
  • Signiere die Zertifikatsanforderung auf dem Puppet Server.
  • Überprüfe die Liste der signierten Zertifikate.

Definiere den Standard-Puppet Server, mit dem sich der Agent verbinden kann, und den ca_server, der für die Überprüfung des Agenten verwendet wird. In diesem Beispiel läuft der Puppet Server unter dem fqdn pp-server.hwdomain.lan.

puppet config set server pp-server.hwdomain.lan --section agent
puppet config set ca_server pp-server.hwdomain.lan --section agent

Führe den folgenden Befehl aus, um die Konfiguration des Puppet Agenten zu überprüfen /etc/puppetlabs/puppet/puppet.conf. Vergewissere dich, dass du die richtige Server- und ca_server-Konfiguration hast.

cat /etc/puppetlabs/puppet/puppet.conf

Du solltest eine ähnliche Ausgabe erhalten:

Puppet Agent konfigurieren

Führe nun den folgenden Befehl aus, um den Puppet-Dienst auf dem Agent-Rechner neu zu starten und seinen Status zu überprüfen.

sudo systemctl restart puppet
sudo systemctl status puppet

Wenn du den Puppet Agent richtig konfiguriert hast, solltest du den Puppet Server mit dem Status running sehen.

Verify Puppet Agent starten

Als Nächstes führst du den folgenden Befehl aus, um den Puppet Agent Rechner zu initialisieren.

puppet ssl bootstrap

Dadurch wird ein neues Zertifikat auf dem Agentenrechner generiert und die Authentifizierung am Puppet Server durchgeführt.

bootstart puppet agent

Wechsle zum Puppet Server und führe den folgenden Befehl aus, um die Liste der Zertifikate (sowohl ausstehende als auch akzeptierte) zu überprüfen. akzeptiere und signiere dann die Zertifikatsanforderung des Agent-Rechners agent1.hwdomain.lan.

puppetserver ca list --all
puppetserver ca sign --certname agent1.hwdomain.lan

Nachdem Puppet Server das Zertifikat signiert hat, solltest du die Meldung„Successfully signed certificate request for agent1.hwdomain.lan“ sehen.

Zertifikatsanforderung signen

Auf dem Puppet Agent Rechner solltest du dann die Meldung„Notice: DieSSL-Initialisierung wurde abgeschlossen„.

Überprüfe abschließend noch einmal die Liste der signierten Zertifikate auf dem Puppet Server mit dem folgenden Befehl.

puppetserver ca list --all

Wenn alles erfolgreich war, solltest du das Zertifikat des Rechners agent1.hwdomain.lan im Abschnitt Signierte Zertifikate sehen.

signiertes Zertifikat auflisten

Jetzt hast du Puppet Server und Agent erfolgreich auf zwei verschiedenen AlmaLinux Servern installiert und konfiguriert. Im nächsten Schritt erstellst du das erste Puppet-Manifest für die automatische Bereitstellung deiner Anwendung.

Erstes Puppet Manifest erstellen

Dieser Abschnitt dient als Ausgangspunkt für die Verwendung des Konfigurationsmanagements von Puppet cas, um die Bereitstellung deiner Anwendungen zu automatisieren. Du wirst dein erstes Puppet Manifest für die Installation von LAMP Stack auf dem Puppet Agent agent1.hwdomain.lan erstellen.

Achte darauf, dass du den folgenden Befehl ausführst und Puppet Manifeste auf dem Puppet Server erstellst.

Gehe in das Verzeichnis /etc/puppetlabs/code/environments/production/ und erstelle ein neues Verzeichnis modules für dein Projekt modules/lamp/.

cd /etc/puppetlabs/code/environments/production/
mkdir -p modules/lamp/{manifests,files}

Wechsle in das Verzeichnis modules/lamp/ und erstelle mit dem nano-Editor eine neue Datei manifests/init.pp.

cd modules/lamp/
nano manifests/init.pp
Füge das folgende Puppet-Skript in die Datei ein. Es installiert die LAMP-Stack-Pakete auf dem Agentenrechner, stellt sicher, dass die LAMP-Stack-Dienste laufen und aktiviert sind, erstellt die benutzerdefinierte index.html-Datei im Verzeichnis /var/www/html/index.html und erstellt eine neue PHPINFO-Datei /var/www/html/info.php.
class lamp {
Package { ensure => 'installed' }
$lamppackages = [ 'httpd', 'mariadb-server', 'php' ]
package { $lamppackages: }

Service { ensure => 'running', enable => 'true'}
$lampsvc = [ 'httpd', 'mariadb' ]
service { $lampsvc: }

file { '/var/www/html/index.html':
ensure  => file,
content => "<h1><center>Welcome to httpd - Managed by Puppet</center></h1>",
mode    => '0644',
}

file { '/var/www/html/info.php':
ensure  => file,
content => "<?php phpinfo(); ?>",
mode    => '0644',
}

}

Speichere und schließe die Datei, wenn du fertig bist.

Wechsle als Nächstes wieder in das Verzeichnis /etc/puppetlabs/code/environments/production/ und erstelle mit dem Editor nano eine weitere Datei manifests/sites.pp.

cd /etc/puppetlabs/code/environments/production/
nano manifests/sites.pp

Definiere den Puppet Agent und das Modul, das du verwenden willst. In diesem Beispiel wirst du das Modul lamp auf dem Agentenrechner agent1.hwdomain.lan einsetzen.

node 'agent1.hwdomain.lan' {
    include lamp
}

Speichere die Datei und beende den Editor.

Anwenden von Puppet Manifests auf den Agent

Führe auf dem Agentenrechner den folgenden Befehl aus, um das Deployment zu ziehen und anzuwenden.

puppet agent -t

Der Puppet Agent sollte nun das Katalog-Deployment vom Puppet Server abrufen, es auf dem Agent-Rechner zwischenspeichern und dann das Deployment anwenden.

Manifest auf den Puppet Agent anwenden

Wenn alles fertig ist, führe den folgenden systemctl-Befehl aus, um die Dienste httpd und MariaDB zu überprüfen.

Überprüfe den httpd-Dienst, um sicherzustellen, dass er läuft und aktiviert ist.

sudo systemctl is-enabled httpd
sudo systemctl status httpd

httpd-Dienst überprüfen

Überprüfe den MariaDB-Dienst, um sicherzustellen, dass er läuft und aktiviert ist.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

mariadb-Dienst überprüfen

Starte deinen Webbrowser und rufe die IP-Adresse des Puppet-Agenten auf (z.B.: http://192.168.10.21/). Wenn die Bereitstellung erfolgreich war, solltest du die benutzerdefinierte index.html Seite wie folgt erhalten:

index.html

Navigiere nun zum URL-Pfad /info.php (d.h.: http://192.168.10.21/info.php). Wenn PHP installiert ist, solltest du die ausführliche Seite von PHPINFO wie folgt erhalten:

phpinfo

Schlussfolgerung

Glückwunsch, du hast die Installation von Puppet Server und Agent auf deinen AlmaLinux Servern erfolgreich abgeschlossen. Außerdem hast du dein erstes Puppet-Manifest für die Bereitstellung des LAMP-Stacks erstellt, was ein guter Startpunkt ist. Jetzt kannst du dein eigenes Puppet-Manifest erstellen, um deine Anwendungen zu verteilen.

Das könnte dich auch interessieren …