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.
Richte Hostname und fqdn auf dem Puppet Agent ein.
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.
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.
Gib außerdem y ein, wenn du den GPG-Schlüssel des Puppet-Repositorys hinzufügen willst.
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.
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
Gib außerdem erneut y ein, um den GPG-Schlüssel des Puppet-Repositorys hinzuzufügen.
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.
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:
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
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:
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:
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:
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.
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.
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.
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.
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.
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
Überprüfe den MariaDB-Dienst, um sicherzustellen, dass er läuft und aktiviert ist.
sudo systemctl is-enabled mariadb sudo systemctl status mariadb
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:
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:
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.