Systemadministration

So verwenden Sie Puppenumgebungen unter Linux, um einen Agenten sicher zu aktualisieren

So verwenden Sie Puppenumgebungen unter Linux, um einen Agenten sicher zu aktualisieren

Zielsetzung

Erstellen und verwenden Sie Puppenumgebungen, um neue Konfiguration zu testen, bevor Sie ein Live -Produktionssystem aktualisieren.

Betriebssystem- und Softwareversionen

Anforderungen

Privilegierter Zugriff auf den Puppet Master Server und den Puppet Client -Knoten.

Konventionen

Einführung

Die meisten Puppeninstallationen beginnen das Leben als Master -Server, der eine einzige Filiale ausführt. Der Meister enthält alle Manifests und andere Konfiguration für alle Puppenagenten, die damit synchronisiert sind. Dies ist ein guter Ausgangspunkt, aber es wird schnell zu einer Zeit eintreffen, in der ein Update vorangetrieben muss. Die Hoffnung auf das Beste ist nicht der beste Weg, um fortzufahren.

Puppet bietet die Tools, um die gesamten Konfigurationszweige zu trennen. Diese werden als Umgebungen bezeichnet. Eine Marionettenumgebung ist eine Möglichkeit, eine isolierte Gruppe von Agentenknoten mit ihrer eigenen dedizierten Konfiguration zu liefern. Jede Umgebung enthält einen gesamten Puppet -Konfigurationsbaum und kann als separater Puppenmeisterserver betrachtet werden.

Wie werden Puppenumgebungen verwendet??

Das typische Szenario für Umgebungen und das, das wir in diesem Leitfaden erforschen, besteht darin, neben der Produktionsumgebung eine Testumgebung zu erstellen, in der eine neue Puppenkonfiguration erstellt wird.

Eine Möglichkeit, die neue Konfiguration in der Testumgebung zu testen. Auf der Testmaschine und der Puppenkonfiguration werden alle Probleme beobachtet, um dies zu korrigieren. Es ist jedoch nicht immer möglich, einen Testserver zu haben, um die Änderungen in der Testumgebung zu überprüfen.

Eine andere Methode und diejenige, die wir hier untersuchen werden, besteht darin, den Puppet -Agenten manuell auf dem Produktionsserver auszuführen, aber mehrere Optionen verwenden, die dazu führen. Dies wird alle Fehler hervorheben, die in einem vollständigen Update aufgetreten wären, ohne dass Ausfallzeiten tatsächlich verursacht worden wären.

Marionettenumgebungen erstellen

In diesem Leitfaden erstellen wir eine sehr einfache Puppeninstanz mit einem Marionettenmeister und einem Marionettenagentenknoten. Der Puppet Master -Server wird so konfiguriert, dass er zwei Umgebungen hat. Test und Entwicklung.

In dieser Anleitung geht davon aus.

Wir werden zwei Umgebungen auf dem Puppenmeister erstellen und in diesen Umgebungen werden wir ein sehr einfaches Puppenmanifest erstellen, das eine Textdatei auf dem Agentknoten erstellt.

Der Standardspeicherort für die Konfigurationsänderung von Puppet, je nachdem welche Verteilung Sie verwendet werden. Auf Ubuntu 18.04LTS, die Version, die in diesem Handbuch verwendet wird, ist der Ort an /etc/puppet. Andere Ausschüttungen (und die offizielle Dokumentation) können sie aufnehmen /etc/puppetlabs/. Sobald Sie jedoch im Hauptverzeichnis für Puppenkonfiguration sind.

Anweisungen

Erstellen Sie die Umgebungsverzeichnisse

Die Umgebungen und ihre Konfiguration bestehen alle unter dem /etc/puppet/code/ Verzeichnis. Auf Ubuntu 18.04 Dieses Verzeichnis ist bei der Installation leer, sodass wir zuerst die beiden Umgebungsverzeichnisse der obersten Ebene mit den folgenden zwei Befehlen erstellen müssen:

# Mkdir -p/etc/puppet/code/Umgebungen/Test # Mkdir -p/etc/puppet/code/Umgebungen/Entwicklung 

Jeder neue Agentenknoten stellt automatisch eine Verbindung zu dem her Entwicklung Umgebung, es sei denn, die Umfeld Variable wird auf eine Alternative in der festgelegt [Agent] Abschnitt der Marionette.Conf Datei auf dem Agentenknoten.



Erstellen von zwei einfachen Site.PP manifestiert sich

Der Grundstück.pp Die Datei ist das primäre Manifest, aus dem der Puppenagent einen Katalog des gewünschten Maschinenzustands aufbaut. Wir werden zwei sehr einfach erstellen Grundstück.pp Dateien in den beiden Umgebungen, die dieselbe Datei auf dem Agentenknoten erstellen. Der einzige Unterschied besteht darin, dass sie unterschiedliche Text in die Datei einfügen.

Der erste Grundstück.pp Die Datei wird die Produktionsumgebung sein unter:

/etc/puppet/code/Umgebungen/Entwicklung/Manifests/Site.pp

Diese Datei sollte folgende Inhalte haben:

Datei '/tmp/Beispiel.TXT ': sicher => präsent, modus => "0644", content => "Aus der Entwicklungsumgebung \ n", 
Kopieren

Verwenden Sie Ihren bevorzugten Texteditor, um diese Datei zu erstellen und zu fopulieren.

Dieses Manifest stellt sicher, dass eine Datei bei vorhanden ist /TMP/Beispiel.txt und enthält den Text „aus der Entwicklungsumgebung“ (das „\ n“ fügt eine neue Zeile am Ende der Datei hinzu, die eine gute Praxis ist und die Puppe aufhört, eine Warnmeldung anzuzeigen, wenn sie nicht vorhanden ist.

Das zweite Manifest befindet sich unter der Testumgebung unter:

/etc/puppet/code/Umgebungen/Tests/Manifests/Site.pp

Diese Datei enthält die folgende:

Datei '/tmp/Beispiel.TXT ': sicher => präsent, modus => "0644", content => "Aus der Testumgebung \ n", 
Kopieren

Dies ist fast identisch mit der Datei in der Entwicklungsumgebung, wobei der einzige Unterschied darin besteht, dass der Text in der Datei angibt, dass er aus der Testumgebung stammt.

Bewertung der neuen Puppenkonfiguration aus der Testumgebung

Der Agentenknoten wird standardmäßig nur mit der Entwicklungsumgebung synchronisiert. Wir werden den Puppenagenten zunächst manuell anweisen, mit dem Puppet Master -Server zu synchronisieren und die zu erstellen und anzuwenden Grundstück.pp das wir in der Entwicklungsumgebung geschaffen haben.

Dies geschieht mit dem folgenden Befehl:

# Puppet Agent -Environment = Produktion -Test 

Der --prüfen Die Option macht den Puppenagent einen Katalog, der im Vordergrund mit ausführlicher Protokollierung ausgeführt wird. Alle Updates oder Änderungen werden auf den Knoten angewendet.

Der --Umwelt = Produktion Die Option ist da, um deutlich zu machen, dass wir aus der Produktionsumgebung synchronisieren. Normalerweise würde dies in der Hauptkonfiguration der Marionettenagenten konfiguriert und müsste nicht in den Befehl enthalten sein.

Wenn der obige Befehl ausgeführt wird, erhalten wir die folgende Ausgabe:

 Info: Verwenden der konfigurierten Umgebung 'Produktion' Info: Abrufen von PluginFacts Info: Abrufen von Plugin Info: Abrufen von Lokalen Info: Laden von Fakten in Informationen: Caching-Katalog für Digital-2.Netzinfo: Konfigurationsversion anwenden '1527680694' Hinweis:/Stage [Main]/Main/Datei [/TMP/Beispiel.txt]/sicher:.02 Sekunden 

Diese Ausgabe zeigt diese Datei an /TMP/Beispiel.txt war nicht anwesend, so dass der Puppenagent es wie in der angewiesenen erstellte Grundstück.pp Manifest. Nachfolgende Läufe werden die nicht haben Notiz: Linien als die /TMP/Beispiel.txt Die Datei existiert mit dem richtigen Inhalt.

Nachdem der Staat des Agent Knode dem Manifest der Entwicklungsumgebung übereinstimmt, können wir testen, was passieren würde, wenn wir das alternative Manifest aus der Testumgebung anwenden würden.

Um die neue Konfiguration zu testen und nicht zu begehen, müssen wir den folgenden Befehl ausführen:

# Puppet Agent -Environment = Tests -Test -Noop 

Wie Sie das sehen können --Umfeld Die Option wurde in das Testen geändert und wir haben die zusätzliche Option aufgenommen --Noop. Mit dieser Option führt der Agent einen Trockenlauf durch. Dies bedeutet, dass der Puppenagent keine tatsächlichen Änderungen am Agentenknoten vornimmt, sondern den gesamten Ausgang erzeugt.

Auf diese Weise können wir bewerten, was passiert wäre, wenn die neue Konfiguration auf den Server angewendet würde. In diesem Fall sieht die Ausgabe des obigen Befehls aus wie:

 Info: Verwenden der konfigurierten Umgebung "Testen" info: Abrufen von PluginFacts Info: Abrufen von Plugin -Info: Abrufen von Orten in Informationen: Faktenladung in Informationen: Konfigurationsversion '1527683748' Hinweis:/Stage [Main]/Main/Datei [/TMP/Beispiel.txt]/Inhalt: ---/tmp/Beispiel.TXT 2018-05-30 12:19:16.205774048 +0000 +++ /TMP /Puppet-File20180530-21610-8ipzur 2018-05-30 12:35:48.740982652 +0000 @@ -1 +1 @@ - -von der Entwicklungsumgebung +aus der Testumgebung Hinweis:/Stage [Main]/Main/Datei [/tmp/Beispiel.txt]/content: current_value 'md5 59f9ce1d4aad5fd155db7ccc2478a93b', sollte 'Md5 Abb8f8f68df144a5673d 62ae6C4A -AFBEISPECTE HABE: Ausgelöstes "Aktualisieren" von 1 Ereignisbekanntmachung: Angewandter Katalog in 0.04 Sekunden 

Die interessantesten Zeilen hier sind die folgenden:

 -Aus der Entwicklungsumgebung +aus der Testumgebung 

Diese zeigen mit dem minus Symbol an ( -) Was wird aus und mit dem Plus -Symbol geändert ( +) Was wird in geändert. In diesem Beispiel ist es der Text in der Datei.

All diese Ausgabe zeigt an, dass die neue Konfiguration erfolgreich angewendet worden wäre und der Inhalt von /TMP/Beispiel.txt wäre modifiziert worden. Wenn dies der gewünschte Status des Produktionsservers ist, dann die Änderungen an der Grundstück.pp Die Datei kann sicher in der Produktionsumgebung erfolgen.



Identifizieren eines Fehlers

Eine neue Puppenkonfiguration wird nicht immer ohne Fehler angewendet. Dies ist der Grund, warum sie immer getestet werden sollte, bevor sie auf ein Produktionssystem angewendet werden. Wir werden einen Fehler in dieser Situation erzwingen, indem wir einen absichtlichen Fehler in den Tests machen Grundstück.pp Datei. Wir werden versuchen, die Berechtigungen der Datei auf festzulegen 0944 Dies ist keine gültige Erlaubnis und verursacht einen Fehler.

Nun, wenn wir rennen:

 # Puppet Agent -Environment = Tests -Test -Noop 

Wir werden die folgende Ausgabe sehen:

 Info: Verwenden der konfigurierten Umgebung "Testen" info: Abrufen von PluginFacts Info: Abrufen von Plugin Info: Abrufen von Lokalen Info: Ladefakten Fehler: Fehler bei der Anwendung des Katalogs: Parametermodus fehlgeschlagen in der Datei [/TMP/Beispiel.TXT]: Die Dateimodusspezifikation ist ungültig: "0944" (Datei:/etc/puppetcode/Umgebungen/Tests/Manifests/Site.PP, Zeile: 1) 

Die folgende Bildschirmaufnahme zeigt diese Ausgabe, wie sie in der Befehlszeile angezeigt werden würde:

Puppet zeigt alle Fehler an, indem sie rot gedruckt werden.

Die Farben lassen uns sofort wissen, dass der Versuch, die neue Puppenkonfiguration aus der Testumgebung zu verwenden. Als wir jedoch die benutzten --Noop Option Keine Fehler wurden für den Produktionsserver verpflichtet.

Abschluss

Wenn Sie Produktionssysteme ausführen, die von Puppet verwaltet werden, ist es immer wichtig, eine neue Konfiguration zu testen, bevor sie angewendet wird. Die Verwendung der Tools -Puppe bietet alternative Umgebungen, in denen eine neue Konfiguration sicher erstellt und anhand von Produktionssystemen bewertet werden kann, weniger Fehler und weniger Ausfallzeiten bedeuten.

Verwendung .HTAccess -Datei, um auf www Host umzuleiten
Manchmal möchten wir Apache anweisen, alle eingehenden Besucher von Our_Sample_Domain umzuleiten.com zu www.Our_Sample_Domain.com, um dies zu tun, bra...
Linux WD Ohrs Erweitertes Festplattenformat
Die Einführung Heutzutage wechselt die Festplattenhersteller auf eine neue Festplattentechnologie, bei der 4 KB -Sektoren anstelle von herkömmlichen 5...
Datum- Handbuch Seite
Name Datum -Drucken oder festlegen das Systemdatum und die Uhrzeit -Synopsis -Datum [Option]… [ +Format] Datum [-U | -utc | -universal] [Mmddhhmm [[CC...