Puppet ist ein Open-Source-Konfigurationsmanagement-Tool, das uns hilft, die IT-Infrastruktur zu automatisieren, einschließlich Bereitstellung, Konfigurationsmanagement und Patchen von Hunderten von Client-Systemen von der zentralen Stelle aus.
Puppet ist für die Betriebssysteme Linux, Mac, BSD, Solaris und Windows verfügbar. Es ist in der Sprache „Ruby“ geschrieben und unter der Apache-Lizenz veröffentlicht,
Diese Anleitung hilft Ihnen bei der Installation von Puppet unter CentOS 8 / RHEL 8.
Architektur
Pupper ist in einer Agent-Master-Architektur konfiguriert. In dieser Architektur führen verwaltete Knoten die Puppet-Agent-Software als Hintergrunddienst aus. Andererseits führen ein oder mehrere Server die Master-Anwendung aus, d. h. Puppet-Server.
Der Puppet-Agent sendet periodisch Fakten an den Puppet-Master und fordert einen Katalog an. Der Master kompiliert und gibt den Katalog dieses bestimmten Knotens zurück, indem er die Informationsquellen verwendet, auf die er Zugriff hat.
Umgebung
Hier konfigurieren wir ein Puppet in der Server/Agent-Architektur.
Puppenmeister
Hostname: puppetserver.itzgeek.local
IP-Adresse: 192.168.0.10
Betriebssystem: CentOS 8
Puppet-Client
Hostname: client.itzgeek.local
IP-Adresse: 192.168.0.20
Betriebssystem: CentOS 8
Voraussetzungen
NTP installieren
Das Timing der Master- und Client-Knoten sollte genau mit dem NTP-Server synchron sein, da der Puppet-Server als Zertifizierungsstelle fungiert.
Wenn Sie einen NTP-Server einrichten müssen, dann:
LESEN: So konfigurieren Sie den NTP-Server mit Chrony
Wenn Sie einen NTP-Client einrichten müssen, dann:
LESEN: So konfigurieren Sie den NTP-Client mit Chrony
Ändern Sie bei Bedarf auch die Systemzeitzone.
LESEN :So ändern Sie die Zeitzone in CentOS 8 / RHEL 8
DNS
Der Puppet-Agent verwendet den Hostnamen, um mit dem Puppet-Server zu kommunizieren. Stellen Sie also sicher, dass Agent-Knoten den Hostnamen des Puppet-Servers mit Hilfe der /etc/hosts-Datei oder des DNS-Servers auflösen können.
Puppet-Server installieren und konfigurieren
Puppet Server ist die Serversoftware, die auf dem Masterknoten ausgeführt wird. Puppet Server steuert die Konfigurationen verwalteter Knoten (Puppet-Agent).
Repository hinzufügen
Um den Puppet-Server zu installieren, müssten wir das Puppet-Repository hinzufügen, indem wir das Repository-Konfigurationspaket installieren.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Puppet installieren
Installieren Sie den Puppet-Server mit dem folgenden Befehl.
yum install -y puppetserver
Speicherzuordnung
Standardmäßig ist Puppet Server für die Verwendung von 2 GB Arbeitsspeicher konfiguriert. Sie können die Speicherzuweisung basierend auf der Anzahl der damit verbundenen Knoten ändern.
Für diese Demo werde ich 512 MB Arbeitsspeicher zuweisen.
Bearbeiten Sie die folgende Datei, um den Wert der Speicherzuweisung zu ändern.
vi /etc/sysconfig/puppetserver
Ändern Sie den Wert.
Von:
JAVA_ARGS="-Xms2g -Xmx2g -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
An:
Verwenden Sie für 512 MB die folgenden Einstellungen.
JAVA_ARGS="-Xms512m -Xmx512m -Djruby.logger.class=com.puppetlabs.jruby_utils.jruby.Slf4jLogger"
Puppet-Server konfigurieren
Die Konfigurationsdatei von Puppet besteht aus zwei Abschnitten namens [master] und [main] für Pupper-Server bzw. Agent.
vi /etc/puppetlabs/puppet/puppet.conf
Ändern Sie die Datei entsprechend Ihrer Umgebung. Pupper-Agenten können jeden der in den dns_alt_names erwähnten Hostnamen verwenden, um sich mit dem Pupper-Server zu verbinden.
# Pupper Server Configuration [master] dns_alt_names = puppetserver,puppetserver.itzgeek.local # Puppet Agent Configuration [main] certname = puppetserver.itzgeek.local server = puppetserver.itzgeek.local runinterval = 30m
Puppet-Server starten
Generieren Sie die Stamm- und Zwischensignatur-CA für Puppet Server.
puppetserver ca setup
Output: Generation succeeded. Find your files in /etc/puppetlabs/puppet/ssl/caWenn Sie puppetserver:command not found erhalten, führen Sie source /etc/profile.d/puppet-agent.sh im Terminal aus oder melden Sie sich von der aktuellen Sitzung ab und wieder an.
Starten und aktivieren Sie den Puppet-Server.
systemctl start puppetserver
systemctl enable puppetserver
Firewall
Der Puppet-Server lauscht auf Port 8140. Konfigurieren Sie also die Firewall so, dass sich Agenten mit dem Master verbinden können.
firewall-cmd --permanent --add-port=8140/tcp
firewall-cmd --reload
Puppet-Agent installieren und konfigurieren
Repository hinzufügen
Um den Puppet-Agenten zu installieren, müssten wir das Puppet-Repository auf allen Knoten hinzufügen.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-8.noarch.rpm
Agent installieren
Installieren Sie den Puppet-Agenten auf Ihrem Client mit dem folgenden Befehl.
dnf install -y puppet-agent
Bearbeiten Sie die Puppet-Konfigurationsdatei und legen Sie die Puppet-Serverinformationen fest.
Legen Sie den Serverwert gemäß Ihrem Puppet-Server-Hostnamen fest. In meinem Fall ist der Server puppetserver.itzgeek.local und certname ist mein Client-Hostname (client.itzgeek.local).
vi /etc/puppetlabs/puppet/puppet.conf
Stellen Sie wie unten ein.
[main] server = puppetserver.itzgeek.local certname = client.itzgeek.local runinterval = 30m
Sie können den Wert von runinterval je nach Anforderung ändern. Diese Einstellung steuert, wie lange der Agent zwischen den beiden Kataloganforderungen warten soll. Sie können den Wert in Sekunden (10 oder 10s), Minuten (10m) und Stunden (1h) einstellen.
Starten Sie Puppet Agent auf dem Knoten und lassen Sie ihn beim Systemstart automatisch starten.
puppet resource service puppet ensure=running enable=true
Output: Notice: /Service[puppet]/ensure: ensure changed 'stopped' to 'running' service { 'puppet': ensure => 'running', enable => 'true', provider => 'systemd', }Wenn Sie puppet:command not found erhalten, führen Sie source /etc/profile.d/puppet-agent.sh im Terminal aus oder melden Sie sich von der aktuellen Sitzung ab und wieder an.
Agent-Knotenzertifikat auf Masterserver signieren
Wir müssen eine Zertifikatsanforderung genehmigen, die von jedem Knoten kommt. Agentenknoten fordern zum ersten Mal Zertifikate an, wenn sie versuchen, ausgeführt zu werden.
Führen Sie den folgenden Befehl auf dem Agentenknoten aus, um eine erste Verbindung herzustellen. Sie können die Warnungen/Fehler ignorieren.
puppet agent -t
Melden Sie sich beim Pupper-Server an und führen Sie den folgenden Befehl aus, um ausstehende Anforderungen anzuzeigen.
puppetserver ca list
Output: Requested Certificates: client.itzgeek.local (SHA256) 06:D8:8E:AE:CA:0B:B1:E7:90:B5:B9:1B:75:3C:95:69:D8:EF:27:0A:5D:CC:45:BB:15:34:64:D2:6B:2C:CA:98
Führen Sie den Befehl puppet cert sign aus, um eine Anfrage zu signieren.
puppetserver ca sign --certname client.itzgeek.local
Output: Successfully signed certificate request for client.itzgeek.local
Der Puppet-Server kann jetzt mit dem Client-Rechner kommunizieren und den Knoten steuern.
Wenn Sie mehrere Signieranforderungen von Knoten haben, können Sie alle Anforderungen mit einem Befehl signieren.
puppetserver ca sign --all
Manchmal müssen Sie möglicherweise das Zertifikat eines bestimmten Knotens widerrufen, um es zurückzulesen.
Ersetzen Sie
puppetserver ca revoke --certname AGENT_NAME
Mit dem folgenden Befehl können Sie alle signierten und unsignierten Anfragen auflisten.
puppetserver ca list --all
Output: Signed Certificates: puppetserver.itzgeek.local (SHA256) E6:2C:6C:1E:9B:C6:AA:D9:84:09:F3:67:45:1B:36:C6:1F:FB:46:5F:92:64:37:19:E3:74:0C:0D:29:D5:C5:F6 alt names: ["DNS:puppetserver.itzgeek.local", "DNS:puppetserver", "DNS:puppetserver.itzgeek.local"] authorization extensions: [pp_cli_auth: true] client.itzgeek.local (SHA256) EF:D8:1A:F2:E9:56:A3:1F:DA:A9:8D:9B:71:02:D8:52:F1:44:98:92:A7:5F:DE:FC:5F:55:37:97:EC:9C:9A:96
Puppe-Client verifizieren
Sobald der Puppet-Server Ihr Client-Zertifikat signiert hat, führen Sie den folgenden Befehl auf dem Client-Rechner aus, um es zu testen.
puppet agent --test
Output: Info: Using configured environment 'production' Info: Retrieving pluginfacts Info: Retrieving plugin Info: Retrieving locales Info: Caching catalog for client.itzgeek.local Info: Applying configuration version '1591351483' Notice: Applied catalog in 0.01 seconds
Schlussfolgerung
Das ist Al. Ich hoffe, Sie haben gelernt, wie man Puppet unter CentOS 8 / RHEL 8 installiert. Als weitere Lektüre erfahren Sie, wie Sie eine einfache Manifestdatei erstellen, um eine Datei und ein Verzeichnis auf dem Client-Knoten zu erstellen. Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.