Erste Anleitung zur Serververwaltung mithilfe von Puppet

Erste Anleitung zur Serververwaltung mithilfe von Puppet

Einführung

Puppet ist ein Open -Source -Konfigurationsverwaltungsdienstprogramm, mit dem der Benutzer automatisch und falls erforderlich ist, auch mehrere Systeme und seine Konfiguration aus der Ferne zu verwalten. Puppet ist deklarativ, was bedeutet, dass der Benutzer nur einen Status des Dienstes oder die Ressource anfordern muss.

Mit anderen Worten stellen Sie sich vor, Sie sind ein Systemadministrator, der Hunderte von Systemen verwaltet und sicherstellen muss, dass diese bestimmte Ressourcen mögen Hallo Paket ist installiert. Um dies in einer herkömmlichen Art der Systemverwaltung zu erreichen. Als Puppenspiel ist der Benutzer nur den Zustand des gewünschten Pakets definieren, und die Marionette kümmert sich um den Rest. In einer Veranstaltung, in der unser Paket „Hallo“ installiert ist, wird die Puppet keine Maßnahmen ergreifen, während das Paket nicht installiert ist.

Szenario

In unserem Szenario werden wir keine Hunderte von Betriebssystemen durchführen und versuchen, sie zu verwalten. Unser Ziel wird viel einfacher sein als das. Tatsächlich werden wir nur zwei separate Systeme ausführen, die Puppenmeister und Puppenagent haben. So versuchen wir über den Master Puppet Server, einen Remoteknoten zu konfigurieren und mithilfe von Puppet Agent „Hallo“ -Paket zu installieren. Dies erfolgt mit einer minimalen Konfiguration möglich.

Terminologie

  • Puppet Master - Zentraler Server, der alle Manifests der Agentenkonfiguration hostet und kompiliert
  • Puppet Agent - Ein Dienst, der auf dem Knoten ausgeführt wird, und prüfen Sie regelmäßig einen Konfigurationsstatus mit Master Puppet Server und holt ein aktuelles aktuelles Konfigurationsmanifest ab
  • Manifest - Konfigurationsdatei, die zwischen Puppet Muster und Puppet Agent ausgetauscht wird
  • Knoten - Ein Betriebssystem, auf dem Puppet Service ausgeführt wird

Szenarioeinstellungen

In diesem Tutorial werde ich beide Hosts einfach als verweisen Meister Und Node1. Betriebssystem für beide verwendet Meister Und Node1 Instances ist Debian 8 Jessie. Ubuntu Linux kann auch als Alternative verwendet werden, um diesem Tutorial zu folgen. Die zugrunde liegende Netzwerkkonfiguration ist irrelevant. Es wird jedoch erwartet, dass das Node1 kann die auflösen Meister Host nach seinem Namen und beide Hosts sind miteinander verbunden, und die richtigen Firewall -Einstellungen werden angewendet, um Puppen zuzulassen Meister Und Node1 Agent zu kommunizieren:

root@node1:/# ping -c 1 Master Ping Master (172.17.0.1): 56 Daten Bytes 64 Bytes von 172.17.0.1: ICMP_SEQ = 0 TTL = 64 Time = 0.083 ms --- Master-Ping-Statistik --- 1 Pakete übertragen, 1 Pakete erhalten, 0% Paketverlust Roundtrip min/avg/max/stddev = 0.083/0.083/0.083/0.000 ms 

NOTIZ: Lesen Sie den Anhang, um das obige Szenario mühelos mit Docker einzurichten.

Puppenmeisterinstallation und Konfiguration

Beginnen wir mit der Installation des Puppet Master:

root@master: ~# apt-Get Installieren Sie PuppetMaster-Passager 

Der obige Befehl installiert die Puppe neben Apache und Passagier. Anstatt einen typischen Webrick -Server zu verwenden 8140. Die Standard- und automatisch generierte Apache -Passagierkonfigurationsdatei kann untergebracht werden /etc/apache2/seites-verfügbar/puppetmaster.Conf:

# Diese virtuelle Host -Konfiguration von Apache 2 zeigt, wie die Puppet als Rack # -Anwendung über Passagier verwendet wird. Siehe # http: // docs.Puppetlabs.Com/Guides/Passagier.HTML für weitere Informationen. # Sie können auch die mitgelieferte Konfiguration verwenden.RU -Datei, um Puppenspiel mit anderen Rack # Servern anstelle von Passagier auszuführen. # Sie möchten diese Einstellungen wahrscheinlich auf die Passagierhigherformance auf passgermaxpoolsize 12 passgerpoolidletime 1500 # passgermaxRequests 1000 Passengstatthrottlerate 120 Hören Sie 8140 SSLEGINE auf SSLPROTOCOL All -Slv2 -SSLV3 SSLEGINE EDHREITH+ASSLV3 SSLCIPHERSUITEL EDHERSUITEL EDHREISUICEL EDHSUICE: ECSLCIPHERSUSUITEL EDHREITH+CARSLIA: ECSLCIPHERSU STITTIERT. EECDH+ARSA+SHA256: EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLV3:!Anull:!Enull:!NIEDRIG:!3DES:!MD5:!Exp:!PSK:!DSS:!RC4:!SAMEN:!IDEE:!ECDSA: KEDH: Camellia256-Sha: AES256-Sha: Camellia128-Sha: AES128-Sha SSLHONORCIPHERORDER auf SSLCertificateFile/var/lib/puppet/ssl/certs/certs/certs/certs/master.pem sslcertificateKeyFile/var/lib/puppet/ssl/privat_keys/master.PEM SSLCertificatechainFile/var/lib/puppet/ssl/certs/ca.pem sslcactificateFile/var/lib/puppet/ssl/certs/ca.PEM # Wenn sich Apache über ungültige Signaturen auf der CRL beschwert, können Sie versuchen, # CRL -Überprüfung zu deaktivieren, indem Sie die nächste Zeile kommentieren. Dies wird jedoch nicht empfohlen. SslcarevocationFile/var/lib/puppet/ssl/ca/ca_crl.PEM # Apache 2.4 führt die SSLCareVocationCheck -Direktive ein und setzt sie auf keine #, die die CRL -Überprüfung effektiv deaktiviert. Wenn Sie Apache 2 verwenden.Mehr. # SSLCareVocationCheck-Kette SSLVerifyClient Optional SSLVerifyDepth 1 # Die Option 'ExportCertData' ist für den Ablauf von Agentenzertifikaten erforderlich -Subject %SSL_CLIENT_S_DNe RequestHeader set X-Client-DN %SSL_CLIENT_S_DNe RequestHeader set X-Client-Verify %SSL_CLIENT_VERIFYe DocumentRoot /usr/share/puppet/rack/puppetmasterd/public/ RackBaseURI /  Options None AllowOverride Keine Bestellung erlauben, leugnen von allen zulassen   

Wenn Sie sich die obige Konfigurationsdatei ansehen. Bestätigen Sie, dass alle aufgelisteten Zertifikatpfade auf ein korrektes Puppen -SSL -Zertifikat hinweisen. Andernfalls müssen neue SSL -Zertifikate generiert werden. Wenn Sie zuerst neue Zertifikate generieren müssen, entfernen Sie aktuelle Zertifikate:

root@master: ~# rm -rf/var/lib/puppet/ssl 

Laufen Sie als nächstes Puppenspiel im Vordergrund, um Ihre neuen Zertifikate zu sehen, um generiert zu werden. Stoppen Sie den Vorgang mit der STRG+C -Schlüsselkombination:

root@master: ~# puppet master --verbose-no-daemonize Info: Erstellen eines neuen SSL-Schlüssels für CA-Info: Erstellen einer neuen SSL-Zertifikatanforderung für CA-Info: Zertifikatanforderung Fingerabdruck (SHA256): FA: D8: 2A: 0f: b4: 0b: 91: 8c: 01: ad: 71: b4: 49: 66: 1f: b1: 38: be: a4: 4e: af: 76: 16: d2: 97: 50: c8: a3: 8F: 35: CC: F2 Hinweis: Unterschriebene Zertifikatanforderung für CA -Info: Erstellen einer neuen Zertifikat -Widerrufsliste Info: Erstellen eines neuen SSL -Schlüssels für Master Info: CSR_ATTRIBUTS -Datei geladen von/etc/puppet/csr_attributes.YAML Info: Erstellen einer neuen SSL -Zertifikatanforderung für Master Info: Zertifikatanforderung Fingerabdruck (SHA256): 43: 67: 42: 68: 64: 73: 83: F7: 36: 2B: 2E: 6F: 06: 20: 65: 87: AB: 61: 96: 2A: EB: B2: 91: A9: 58: 8E: 3F: F0: 26: 63: C3: 00 Hinweis: Master hat eine Warteurkundenanforderung Anfrage: Unterschriebene Zertifikatanforderung für Master -Mitteilung: Entfernen von Datei Puppet :: SSL :: CertificateRequest Master unter '/var/lib/puppet/ssl/ca/requests/master.PEM 'Hinweis: Entfernen von Datei Puppet :: SSL :: CertificateRequest Master unter'/var/lib/puppet/ssl/Certificate_Requests/Master.PEM 'KOMITTAL: Puppet Master Version 3 starten.7.2 ^Cnotice: gefangen int; Rufen Sie Stopp an 

Bevor wir unseren Puppet Master beginnen, müssen wir zunächst ein Standardmanifest für leere Konfiguration erstellen:

root@master: ~#>/etc/puppet/Manifests/Site.pp 

Alles ist bereit, Puppenmeister nach dem Neustart zu beginnen:

root@master: ~# systemctl aktivieren apache2 Synchronisierungsstatus für Apache2.Service mit sysvinit über Update-RC.D… Ausführung/USR/SBIN/UPDATE-RC ausführen.D Apache2 Standards ausführen/usr/sbin/update-rc.D Apache2 aktivieren 

und starten Sie Puppet Master, indem Sie den Apache -Webserver starten:

root@master: ~# service apache2 starten [OK] Starten des Webservers: apache2. root@Master: ~# 

Bestätigen Sie, dass die Puppe läuft

# PS Aux User PID %CPU %mem VSZ RSS TTY STAT START TIME Befehlsrouch 1 0.0 0.0 20228 2016 ? SS 11:53 0:00 /Bin /Bash Root 1455 0.0 0.0 98272 4600 ? SS 12:40 0:00/usr/sbin/apache2 -K Start Root 1458 0.0 0.0 223228 1920 ? SSL 12:40 0:00 Passagierwatchdog Root 1461 0.0 0.0 506784 4156 ? SL 12:40 0:00 Passagierhelperagent NO.0 0.0 226648 4892 ? SL 12:40 0:00 Passagierloggingagent www-data 1476 0.0 0.0 385300 5116 ? SL 12:40 0:00/usr/sbin/apache2 -k starten www -data 1477 0.0 0.0 450880 5608 ? SL 12:40 0:00/usr/sbin/apache2 -K Start Root 1601 0.0 0.0 17484 1140 ? R+ 12:44 0:00 PS Aux 

und Hören Sie den Hafen 8140:

# Netstat -ant Active Internet Connections (Server und festgelegt) Proto Recv-Q Send-Q Lokale Adresse Fremdadressenzustand TCP6 0 0 :: 8140 :::* Hören Sie TCP6 0 0 ::: 80 :::* Hören Sie TCP6 0 an. 0 ::: 443 :::* hör zu 

Puppenknotenkonfiguration

Im Moment wird unser Master -Server ausgeführt und erwartet Anfragen von Puppet Agent. Daher ist es Zeit, unseren Puppenagenten einzubauen Node1:

# APT-GET PUPPET INSTALLEN 

Als nächstes müssen wir Puppet so konfigurieren, dass sie als Agent fungieren /etc/puppet/puppet.Conf:
AUS:

[main] logdir =/var/log/puppet vardir =/var/lib/puppet ssldir =/var/lib/puppet/ssl rundir =/var/run/puppet factpath = $ vardir/lib/firter prerun_command =/etc/ Puppet/etckeeper-commit-pre postrun_command =/etc/puppet/etckeeper-commit-post [Master] # Diese sind benötigt, wenn der Puppetmaster von Passagiernummer betrieben wird und sicher entfernt werden kann, wenn Webrick verwendet wird. ssl_client_header = ssl_client_s_dn ssl_client_verify_header = ssl_client_verify 

ZU:

[main] logdir =/var/log/puppet vardir =/var/lib/puppet ssldir =/var/lib/puppet/ssl rundir =/var/run/puppet factpath = $ vardir/lib/firter prerun_command =/etc/ Puppet/etckeeper-commit-pre postrun_command =/etc/puppet/etckeeper-commit-post [Agent] Server = Master 

Die obige Richtlinie Server = Master Definiert einen Master -Server, an den der Puppenagent angeschlossen werden soll. Wo Wort Meister In unserem Fall als Hostname, der sich beschließt, die IP -Adresse des Servers zu meistern:

# Ping -c 1 Master Ping Master (172.17.0.43): 56 Daten Bytes 64 Bytes aus 172.17.0.43: ICMP_SEQ = 0 TTL = 64 Time = 0.226 ms --- Master-Ping-Statistik --- 1 Pakete übertragen, 1 Pakete erhalten, 0% Paketverlust Roundtrip min/avg/max/stddev = 0.226/0.226/0.226/0.000 ms 

Der Installationsteil ist erledigt und es bleibt übrig, dass Puppet nach dem Neustart beginnen und Puppet starten kann:

# SystemCTL Aktivpuppensynchronisierungsstatus für Puppenspiel.Service mit sysvinit über Update-RC.D… Ausführung/USR/SBIN/UPDATE-RC ausführen.D Puppet-Standardeinstellungen ausführen/usr/sbin/update-RC.D Puppet aktivieren Root@node1:/# Service Puppet Start [OK] Startpuppenagent. 

Darüber hinaus ist der Agent standardmäßig nach der Installation auf neuen unbefinderten Hosts deaktiviert. Um Puppet Agent zu ermöglichen, müssen wir ausführen:

root@node1:/# puppet Agent -auf 

Unterschriftenzertifikat

Beide Gastgeber Meister Und Node1 sind in Betrieb. Der letzte Satz von Konfiguration, der erforderlich ist, um sowohl Master als auch Agent zu sprechen, ist das Signieren Node1Zertifikatanfrage. Nachdem wir mit Puppenagenten angefangen haben Node1 Eine Anfrage zum Zertifikatzeichen wurde ausgestellt Meister Server:

Root@Master:/# Puppet Cert -Liste "Node1" (SHA256) 2C: 62: B3: A4: 1A: 66: 0A: 14: 17: 93: 86: E4: F8: 1C: E3: 4E: 25: F8 : 7a: 7c: fb: fc: 6b: 83: 97: f1: c8: 21: dd: 52: e4: 91 

Standardmäßig muss jede Zertifikatzeichenanforderung manuell unterzeichnet werden:

root@Master:/# Puppet Cert Sign Node1 Hinweis: Unterschriebene Zertifikatanforderung für Node1 Hinweis: Entfernen von Dateipuppen :: SSL :: CertificateRequest Node1 unter '/var/lib/puppet/ssl/ca/requests/node1.Pem ' 

Zu diesem Zeitpunkt sollte unser Meister zwei signierte Zertifikate veranstalten:

 Root@Master:/# Puppet Cert -Liste -alle + "Master" (SHA256) EE: E0: 0A: 5C: 05: 17: FA: 11: 05: E8: D0: 8C: 29: FC: D2: 1f : E0: 2f: 27: a8: 66: 70: d7: 4b: a1: 62: 7e: ba: f4: 7c: 3d: e8 + "node1" (SHA256) 99: DC: 41: BA: 26: fe : 89: 98: dc: d6: f0: 34: 64: 7a: df: e2: 2f: 0e: 84: 48: 76: 6d: 75: 81: Bd: Ef: 01: 44: CB: 08: D9 : 2a 

Auslösen von Puppenkonfigurationsanforderungen

Es ist Zeit, ein erstes Konfigurationsmanifest zu erstellen. Wie bereits oben erwähnt, werden wir jetzt sicherstellen, dass dieses Paket Hallo ist verfügbar Node1. Öffnen Sie ein Standardmanifest /etc/puppet/Manifests/Site.pp Datei auf der Meister Hosts und fügen Sie die folgende vereinfachte Knotenkonfiguration hinzu:

Paket "Hallo": sicher => "installiert" 

Unser Agent auf Node1 wird standardmäßig so eingestellt, dass alle 30 Minuten die Konfiguration des Masters abrufen. Wenn wir nicht warten möchten, können wir die Konfigurationsanforderung manuell auslösen:

root@node1:/# Hallo Bash: Hallo: Befehl nicht gefunden 

Paket Hallo ist derzeit nicht verfügbar auf Node1. Neue Konfigurationsanforderung manuell auslösen:

root@node1:/# puppet Agent -Test Info: Caching Certificate_Revocation_List für CA -Info: Abrufen von PluginFacts Infakte: Abrufen von Plugin Info: Caching -Katalog für Node1 Info: Anwenden der Konfigurationsversion [Hallo]/Stellen Sie sicher, dass geändert wird, um "gereinigt" in "Präsentieren" info: Erstellen von Statusdateien/var/lib/puppet/Status/Status.YAML -Bescheid: Fertiger Kataloglauf in 4.00 Sekunden 

Aus der obigen Ausgabe können wir feststellen, dass eine neue Konfiguration angewendet wurde und das Paket „Hallo“ jetzt verfügbar ist:

root@node1:/# Hallo Hallo, Welt! 

Abschluss

Der obige Text zeigte eine simple Puppenkonfigurationsprozedur. Es sollte jedoch als Ausgangspunkt für Multi -Knoten -Bereitstellungen dienen. Um mehr Knoten hinzuzufügen, besuchen Sie einfach oben erneut Puppenknotenkonfigurationsabschnitt Und Unterschriftenzertifikat Abschnitte dieses Artikels.

Fehlerbehebung

Apache2: konnte den voll qualifizierten Domänennamen des Servers mit 172 nicht zuverlässig bestimmen.17.0.43. Legen Sie die Anweisung "Servername" weltweit fest, um diese Nachricht zu unterdrücken

# Echo "Servername 'Hostname'" >>/etc/apache2/apache2.Conf 

Hinweis: Überspringen von Puppenkonfiguration Client; administrativ deaktiviert (Grund: 'standardmäßig bei neuen oder nicht konfigurierten alten Installationen deaktiviert);
Verwenden Sie "Puppet Agent -Enable", um wieder zu werden.

root@node1:/# puppet Agent -auf 

Anhang

Schnelle Szenarioeinstellungen mit Docker

Der Linuxconfig/Sandbox ist ein Docker -Bild, das eine Basistextbearbeitungs- und Netzwerk -Tools enthält, mit der Sie bei der Konfiguration und Fehlerbehebung bei Ihrem Puppenmaster und dem Agenten helfen können.
Zuerst starten Sie Puppet Master:

# Docker Run -it -h Master --Name = Master Linuxconfig/Sandbox/Bin/Bash 

Sobald der Marionettenmeister in Betrieb ist Node1:

# Docker run -it -h node1 --Name = node1 - -link master: master linuxconfig/sandbox/bin/bash 

Verwandte Linux -Tutorials:

  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Python reguläre Ausdrücke mit Beispielen
  • Bash -Skript: Hallo Weltbeispiel
  • Dinge zu installieren auf Ubuntu 20.04
  • So richten Sie einen OpenVPN -Server auf Ubuntu 20 ein.04
  • Mint 20: Besser als Ubuntu und Microsoft Windows?
  • Wie man Verwaltungsoperationen mit Ansible durchführt…
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Umgang mit Benutzereingaben in Bash -Skripten
  • So entfernen Sie Bloatware von Ihrem Samsung Android Mobile…