GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

So installieren Sie Puppet 6.x auf CentOS 7 / RHEL 7

Puppet ist ein Open-Source-Tool zur Konfigurationsverwaltung, mit dem Sie die Konfigurationen von Hunderten von Client-Systemen zentral verwalten können.

Puppet macht das Leben des Administrators einfacher, indem es den Zeitaufwand für sich wiederholende Aufgaben reduziert und es ihm ermöglicht, sich auf andere Arbeiten zu konzentrieren, und stellt außerdem sicher, dass die bereitgestellte Konfiguration in der gesamten Infrastruktur konsistent ist.

Puppet ist für Linux-, Mac-, BSD-, Solaris- und Windows-basierte Computersysteme verfügbar, veröffentlicht unter der Apache-Lizenz, geschrieben in der Sprache „Ruby“.

Diese Anleitung hilft Ihnen bei der Installation von Puppet 6.x auf CentOS 7 / RHEL 7.

Architektur

Agent / Master

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.

Die eigenständige Architektur

In dieser Architektur hat jeder verwaltete Knoten seine Kopie der Konfigurationsinformationen und kompiliert seinen Katalog. Es führt die Puppet Apply-Anwendung als Cron-Job aus.

Umgebung

Hier konfigurieren wir ein Puppet in der Server/Agent-Architektur.

Puppenmeister

Hostname: server.itzgeek.local
IP-Adresse: 192.168.1.10
Betriebssystem: CentOS 7.6

Puppet-Client

Hostname: client.itzgeek.local
IP-Adresse: 192.168.1.20
Betriebssystem: CentOS 7.6

Voraussetzungen

NTP installieren

Die Zeiten der Master- und Client-Knoten sollten genau mit den Upstream-Zeitservern synchronisiert sein, da der Puppet-Master-Server-Master als Zertifizierungsstelle fungiert.

(Wenn die Zeit falsch ist, kann es fälschlicherweise Agentenzertifikate von weit zurückliegenden oder zukünftigen Datum ausstellen, die andere Knoten als abgelaufen behandeln werden.)

Installieren Sie das NTP-Paket und führen Sie die Zeitsynchronisierung mit Upstream-NTP-Servern durch.

yum -y install ntpdatentpdate 0.centos.pool.ntp.org
Stellen Sie mithilfe von date sicher, dass sich alle Knoten in derselben Zeitzone befinden Befehl. Wenn es Abweichungen gibt, ändern Sie es entsprechend.

LESEN :So ändern Sie die Zeitzone in CentOS 7 / RHEL 7

DNS

Der Puppet-Agent verwendet den Hostnamen, um mit dem Puppet-Server zu kommunizieren. Stellen Sie also sicher, dass Agentenknoten den Hostnamen von Puppet Server mit Hilfe von /etc/hosts auflösen können Datei oder DNS-Server.

Puppet-Repository einrichten

Um den Puppet-Server/Agenten zu installieren, müssten wir das Puppet-Repository auf allen Knoten hinzufügen.

Richten Sie das Repository von Puppet sowohl auf dem Master- als auch auf dem Agentenknoten ein.
rpm -Uvh https://yum.puppet.com/puppet6-release-el-7.noarch.rpm

Puppet-Server installieren

Puppet Server ist die Serversoftware, die auf dem Puppet-Master-Knoten läuft. Puppetmaster pusht die Konfigurationen auf verwaltete Knoten (Puppet-Agent).

Installieren Sie den Puppet-Server mit dem folgenden Befehl.

yum install -y puppetserver

Der Puppet-Server ist jetzt installiert, starten Sie den Puppet-Server-Dienst noch nicht.

Puppet-Server konfigurieren

Speicherzuordnung

Standardmäßig ist Puppet Server JVM für die Verwendung von 2 GB Arbeitsspeicher konfiguriert. Sie können es ändern, abhängig davon, wie viel Speicher auf Ihrem Master-Knoten verfügbar ist; Stellen Sie sicher, dass es ausreicht, um alle damit verbundenen Knoten zu verwalten.

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"

Eingebetteter Webserver

Puppet Server verwendet einen Jetty-basierten Webserver, der in den JVM-Prozess des Dienstes eingebettet ist. Sie müssen den Webserver nicht konfigurieren oder aktivieren; es funktioniert out-of-the-box. Es funktioniert gut unter Lasten auf Produktionsebene.

Die Einstellungen des eingebetteten Webservers können in webserver.conf geändert werden. Möglicherweise müssen Sie diese Datei bearbeiten, wenn Sie eine externe Zertifizierungsstelle verwenden oder Puppet Server auf einem nicht standardmäßigen Port ausführen.

Puppenkonfiguration

Einfache Konfigurationen

Puppet Server erfordert keine Konfiguration. Sie können einfach den Puppet-Serverdienst starten. Es werden die Standardeinstellungen verwendet.

Der standardmäßige Puppet-Server-Hostname (dns_alt_names) ist puppet, daher müssen Sie server =puppet in der Puppet-Agent-Konfigurationsdatei verwenden.

Wenn Sie den Hostnamen des Puppet-Masters ändern möchten, gehen Sie wie folgt vor.

Erweiterte Konfigurationen (optional)

Hier werde ich die Puppet Master-Einstellungen für unsere Anforderung ändern.

vi /etc/puppetlabs/puppet/puppet.conf

Platzieren Sie die folgenden Linien. Passen Sie es an Ihre Umgebung an.

[master]dns_alt_names =server.itzgeek.local,server[main]certname =server.itzgeek.localserver =server.itzgeek.localenvironment =productionruninterval =1h

Puppet-Server starten

Generieren Sie eine Stamm- und Zwischensignierungszertifizierungsstelle für Puppet Server.

Puppetserver-CA-Setup

Ausgabe:

Generierung erfolgreich. Finden Sie Ihre Dateien in /etc/puppetlabs/puppet/ssl/ca
Wenn 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 Puppetserver startensystemctl Puppetserver aktivieren

Firewall

Der Puppet-Master lauscht auf Port 8140, also konfigurieren Sie die Firewall so, dass sich verwaltete Knoten mit dem Master verbinden können.

firewall-cmd --permanent --add-port=8140/tcpfirewall-cmd --reload

Puppet-Agent installieren

Installieren Sie den Puppet-Agenten auf Ihrem Client mit dem folgenden Befehl.

yum install -y Puppet-Agent

Der Puppet-Agent verwendet auch einige der Standardeinstellungen, um eine Verbindung zum Master-Knoten herzustellen. Wir müssen jedoch die Puppet-Konfigurationsdatei bearbeiten und Puppet-Master-Informationen festlegen.

Legen Sie Server fest Wert gemäß Ihrem Masterknotennamen. In meinem Fall ist der Server server.itzgeek.local und certname ist mein Client-Hostname (client.itzgeek.local ).
vi /etc/puppetlabs/puppet/puppet.conf

Stellen Sie wie unten ein.

[main]certname =client.itzgeek.localserver =server.itzgeek.localenvironment =productionruninterval =1h

Sie können den Wert von runinterval ändern hängt von der Anforderung ab. Sie können den Wert in Sekunden (10 oder 10s), Minuten (10m) und Stunden (1h) einstellen. Diese Einstellung steuert, wie lange der Agent zwischen den beiden Kataloganforderungen warten soll.

Starten Sie Puppet Agent auf dem Knoten und lassen Sie ihn beim Systemstart automatisch starten.

Puppet-Ressourcendienst Puppet sure=running enable=true

Ausgabe:

Hinweis:/Service[puppet]/ensure:stellt sicher, dass „stopped“ in „running“ geändert wurde 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. 

Agentenknotenzertifikat auf Masterserver signieren

In einer Agent/Master-Bereitstellung muss ein Administrator eine von jedem Knoten kommende Zertifikatsanforderung genehmigen, damit er die Konfigurationen abrufen kann. Agentenknoten fordern zum ersten Mal Zertifikate an, wenn sie versuchen, ausgeführt zu werden.

Melden Sie sich beim Puppet-Master-Server an und führen Sie den folgenden Befehl aus, um ausstehende Anfragen anzuzeigen.

Puppetserver CA-Liste

Ausgabe:

client.itzgeek.local (SHA256) A6:0E:93:51:FF:53:C8:FA:63:70:72:53:B6:1E:1B:A8:49:79:37:7E :57:00:02:AE:32:44:22:BE:97:F5:08:09

Führen Sie den Befehl puppet cert sign aus, um eine Anfrage zu signieren.

puppetserver ca sign --certname client.itzgeek.local

Ausgabe:

Erfolgreich signierte Zertifikatsanforderung für client.itzgeek.local

Der Puppet-Master 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 sie zurückzulesen.

Ersetzen Sie mit Ihrem Client-Hostnamen.

puppetserver kann --certname <AGENT_NAME widerrufen>

Mit dem folgenden Befehl können Sie alle signierten und unsignierten Anfragen auflisten.

puppetserver ca list --all

Ausgabe:

server.itzgeek.local (SHA256) 6E:90:94:6F:31:4F:8C:2A:28:90:D5:C0:6D:71:18:65:5E:86:DE:1C :16:9C:7C:30:8F:BF:DA:87:2D:F7:2C:26 alternative Namen:["DNS:server.itzgeek.local", "DNS:server", "DNS:server.itzgeek .local"]client.itzgeek.local (SHA256) A6:08:36:5C:DB:73:0D:16:BA:5B:0D:72:76:FD:C7:31:DD:87:6F:EC:D4:4F:7A:87:E9:4F:73:70:D0:09:6E:61

Puppe-Client überprüfen

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

Ausgabe:

Info:Verwenden der konfigurierten Umgebung „production“Info:Abrufen von PluginfactsInfo:Abrufen von pluginInfo:Abrufen von localesInfo:Zwischenspeichern des Katalogs für client.itzgeek.localInfo:Anwenden der Konfigurationsversion „1558878523“Hinweis:Angewandter Katalog in 0,03 Sekunden

Erstellung unseres ersten Manifests

Manifest ist eine Datendatei, die Client-Konfigurationen enthält, die in der deklarativen Sprache von Puppet oder einer Ruby-DSL geschrieben sind. Dieser Abschnitt behandelt einige grundlegende Manifeste zum Erstellen eines Verzeichnisses sowie einer Datei auf dem verwalteten Knoten.

Die Hauptmanifestdatei von Puppet befindet sich unter /etc/puppetlabs/code/environments/production/manifests/site.pp.

vi /etc/puppetlabs/code/environments/production/manifests/site.pp

Fügen Sie nun die folgenden Zeilen zum Manifest hinzu, um ein Verzeichnis auf dem verwalteten Knoten zu erstellen.

Wenn die Knotenvariable nicht festgelegt ist, gilt dieses Manifest für alle Knoten, die mit dem Puppet-Master verbunden sind.
Knoten 'client.itzgeek.local ' { # Gilt nur für den erwähnten Knoten; wenn nichts erwähnt, gilt für all.file { '/tmp/puppetesttdir':# Ressourcentyp Datei sicherstellen => 'Verzeichnis', # Als Verzeichnisbesitzer anlegen => 'root', # Eigentümergruppe => 'root', # Gruppennamenmodus => '0755', # Verzeichnisberechtigungen}}

Führen Sie nun den folgenden Befehl auf dem Client-Knoten aus, um die Konfigurationen abzurufen.

puppet agent --test

Ausgabe:

Info:Konfigurierte Umgebung 'production' verwendenInfo:Pluginfacts abrufenInfo:Plugin-Info abrufen:Katalog für client.itzgeek.local zwischenspeichernInfo:Konfigurationsversion '1472165498' anwenden Hinweis:/Stage[main]/Main/Node[client.itzgeek. local]/File[/tmp/puppetesttdir]/ensure:createdNotice:Angelegter Katalog in 0,03 Sekunden

Stellen Sie sicher, dass das Verzeichnis auf dem verwalteten Knoten erstellt wurde.

[root@client ~]# ls -ld /tmp/puppetesttdirdrwxr-xr-x. 2 root root 6 Mai 26 09:57 /tmp/puppetesttdir

Lassen Sie uns den Test noch einmal durchführen, indem wir das Manifest schreiben, um eine Datei mit Inhalt darin zu erstellen.

Knoten 'client.itzgeek.local' { # Gilt nur für den erwähnten Knoten; wenn nichts erwähnt, gilt für all.file { '/tmp/puppettestfile':# Ressourcentyp Datei sicherstellen => 'present', # Sicherstellen, dass es existiert Owner => 'root', # Ownership group => 'root', # Group Name mode => '0644', # File permissions content => "This File is created by Puppet Server"}}

Sie können zum Client-Rechner gehen und den Katalog abrufen, wie im vorherigen Beispiel gezeigt, oder der Puppet-Agent ruft das Manifest abhängig vom runinterval regelmäßig vom Puppet-Server ab Sie in der Konfigurationsdatei festlegen.

Schlussfolgerung

Ich hoffe, Sie haben gelernt, wie man Puppet Server und Agent unter CentOS 7 / RHEL 7 installiert. Außerdem haben Sie gelernt, eine einfache Manifestdatei zu erstellen, um ein Verzeichnis auf dem Client-Knoten zu erstellen. Bitte teilen Sie uns Ihr Feedback im Kommentarbereich mit.


Cent OS
  1. So installieren Sie den Postfix-Mailserver auf RHEL 8 / CentOS 8

  2. So installieren Sie den DNS-Server unter RHEL 8 / CentOS 8 Linux

  3. So installieren Sie Puppet unter CentOS 8 / RHEL 8

  4. So installieren Sie Puppet auf RHEL 8/CentOS 8

  5. CentOS / RHEL 7:So installieren Sie die GUI

So installieren Sie Zabbix Server 4.x unter CentOS 6 / RHEL 6

So installieren Sie Jetty Web Server unter CentOS 7 / RHEL 7

So installieren Sie Zabbix Server 5.0 / 4.0 unter CentOS 7 / RHEL 7

So installieren Sie den VNC-Server unter CentOS 8 / RHEL 8

So installieren Sie Zabbix Server 5.0 / 4.0 auf CentOS 8 / RHEL 8

So installieren Sie Puppet Server unter CentOS 7