Wie installiere ich Puppet 4 auf Ubuntu 16.04

Einführung

Puppet ist ein Konfigurationsverwaltungstool, mit dem Systemadministratoren die Bereitstellung, Konfiguration und Verwaltung einer Serverinfrastruktur automatisieren können. Durch vorausschauendes Planen und die Verwendung von Konfigurationsverwaltungstools wie Puppet können Sie den Zeitaufwand für die Wiederholung grundlegender Aufgaben reduzieren und sicherstellen, dass die Konfigurationen in Ihrer gesamten Infrastruktur konsistent und genau sind.

Puppet gibt es in zwei Varianten: Puppet Enterprise und Open Source Puppet. Beide laufen auf den meisten Linux-Distributionen, verschiedenen UNIX-Plattformen und Windows.

In diesem Tutorial zeigen wir, wie Open Source Puppet 4 in einem Master-Agent-Setup unter Ubuntu 16.04 installiert wird. In diesem Setup kann der * Puppet Master * -Server, auf dem die Puppet Server-Software ausgeführt wird, zur Steuerung aller anderen Server verwendet werden, die als * Puppet Agent * -Knoten bezeichnet werden.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie * drei Ubuntu 16.04-Server *, die jeweils einen Nicht-Root-Benutzer mit den Rechten + sudo + haben. Weitere Informationen zum Einrichten eines Benutzers mit Sudo-Berechtigungen finden Sie unter Initial Server Setup with Ubuntu 16.04 leiten.

Ein Puppenspieler

Ein Server wird der * Puppet Master * sein. Der Puppet-Master führt Puppet Server aus, der Ressourcen benötigt und Folgendes erfordert:

  • mindestens 4 GB Speicher

  • mindestens 2 CPU-Kerne

Für die Verwaltung größerer Infrastrukturen benötigt der Puppet-Master mehr Ressourcen.

Zwei Marionettenagenten

Die anderen beiden Server sind * Puppet-Agent-Knoten *, die vom Puppet-Master verwaltet werden. Wir nennen sie "+ db1 " und " web1 +".

Wenn diese drei Server eingerichtet sind, können Sie beginnen.

Schritt 1 - Konfigurieren von / etc / hosts

Puppet-Master-Server und die von ihnen verwalteten Knoten müssen miteinander kommunizieren können. In den meisten Situationen wird dies mithilfe von DNS erreicht, das entweder auf einem extern gehosteten Dienst oder auf selbst gehosteten DNS-Servern konfiguriert ist, die als Teil der Infrastruktur verwaltet werden.

DNS ist eine eigene Kompetenzdomäne, selbst bei gehosteten Diensten. In diesem Lernprogramm verwenden wir daher das "+ / etc." / hosts + `Datei stattdessen.

Auf jeder Maschine

Bearbeiten Sie auf jedem Computer die Datei "+ / etc / hosts +". Geben Sie am Ende der Datei den Puppet-Master-Server wie folgt an und ersetzen Sie Ihren Puppet-Master durch die IP-Adresse:

sudo nano /etc/hosts

/ etc / hosts

. . .
   puppet
. . .

Wenn Sie fertig sind, speichern und beenden Sie das Programm.

Schritt 2 - Puppet Server installieren

Puppet Server ist die Software, die die Konfiguration vom Puppet Master auf die anderen Server überträgt. Es läuft nur auf dem Puppet Master; Die anderen Hosts führen den Puppet Agent aus.

Mit den folgenden Befehlen aktivieren wir das offizielle Puppet Labs-Sammlungsrepository:

curl -O https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Wenn "+ apt-get update" abgeschlossen ist, installieren wir das "+ puppet server" -Paket, um sicherzustellen, dass es aus dem Puppet Labs-Repository abgerufen wird:

sudo apt-get install puppetserver

Drücken Sie + Y +, um fortzufahren. Nach Abschluss der Installation und bevor wir den Server starten, nehmen wir uns einen Moment Zeit, um den Speicher zu konfigurieren.

Konfigurieren Sie die Speicherzuordnung

Standardmäßig ist Puppet Server so konfiguriert, dass 2 GB RAM verwendet werden. Sie können diese Einstellung basierend auf dem freien Speicher des Masterservers und der Anzahl der verwalteten Agentenknoten anpassen.

Um es anzupassen, öffne + / etc / default / puppetserver +:

sudo nano /etc/default/puppetserver

Suchen Sie dann die Zeile "+ JAVA_ARGS " und stellen Sie mit den Parametern " -Xms " und " -Xmx +" die Speicherzuordnung ein. Wir werden unsere auf 3 Gigabyte erhöhen:

/ etc / default / puppetserver

JAVA_ARGS="-Xmsg -Xmxg -XX:MaxPermSize=256m"

Speichern und beenden, wenn Sie fertig sind.

Öffnen Sie die Firewall

Wenn wir Puppet Server starten, wird Port 8140 für die Kommunikation verwendet. Wir stellen daher sicher, dass dieser geöffnet ist:

sudo ufw allow 8140

Als nächstes starten wir Puppet Server.

Starten Sie den Puppet Server

Wir werden "+ systemctl +" verwenden, um Puppet Server zu starten:

sudo systemctl start puppetserver

Dies wird einige Zeit in Anspruch nehmen.

Sobald wir zur Eingabeaufforderung zurückkehren, werden wir überprüfen, ob wir erfolgreich waren, da "+ systemctl +" nicht das Ergebnis aller Dienstverwaltungsbefehle anzeigt:

sudo systemctl status puppetserver

Wir sollten eine Zeile mit der Aufschrift "active (running)" sehen und die letzte Zeile sollte ungefähr so ​​aussehen:

OutputDec 07 16:27:33 puppet systemd[1]: Started puppetserver Service.

Nachdem wir sichergestellt haben, dass der Server ausgeführt wird, konfigurieren wir ihn so, dass er beim Start gestartet wird:

sudo systemctl enable puppetserver

Während der Server läuft, können wir Puppet Agent auf unseren beiden Agent-Rechnern "+ db1 " und " web1 +" einrichten.

Schritt 3 - Puppet Agent installieren

Die Puppet-Agentensoftware muss auf jedem Server installiert sein, den der Puppet-Master verwalten wird. In den meisten Fällen umfasst dies jeden Server in Ihrer Infrastruktur.

Aktivieren Sie das offizielle Puppet Labs-Repository

Zuerst aktivieren wir das offizielle Puppet Labs-Sammlungsrepository mit den folgenden Befehlen:

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update

Installieren Sie das Puppet-Agentenpaket

Dann installieren wir das Paket + puppet-agent:

sudo apt-get install puppet-agent

Wir starten den Agenten und aktivieren ihn für den Start beim Booten:

sudo systemctl start puppet
sudo systemctl enable puppet

Zum Schluss wiederholen wir diese Schritte auf "+ web1 +":

wget https://apt.puppetlabs.com/puppetlabs-release-pc1-xenial.deb
sudo dpkg -i puppetlabs-release-pc1-xenial.deb
sudo apt-get update
sudo apt-get install puppet-agent
sudo systemctl enable puppet
sudo systemctl start puppet

Nachdem auf beiden Agentenknoten die Puppet-Agentensoftware ausgeführt wird, signieren wir die Zertifikate auf dem Puppet-Master.

Schritt 4 - Zertifikate auf Puppet Master signieren

Wenn Puppet zum ersten Mal auf einem Agentenknoten ausgeführt wird, sendet es eine Zertifikatsignierungsanforderung an den Puppet-Master. Bevor Puppet Server mit dem Agentenknoten kommunizieren und ihn steuern kann, muss es das Zertifikat des jeweiligen Agentenknotens signieren.

Aktuelle Zertifikatsanforderungen auflisten

Führen Sie den folgenden Befehl auf dem Puppet-Master aus, um alle nicht signierten Zertifikatanforderungen aufzulisten:

sudo /opt/puppetlabs/bin/puppet cert list

Es sollte eine Anfrage für jeden von Ihnen eingerichteten Host geben, die ungefähr so ​​aussieht:

Output:  "db1.localdomain"  (SHA256) 46:19:79:3F:70:19:0A:FB:DA:3D:C8:74:47:EF:C8:B0:05:8A:06:50:2B:40:B3:B9:26:35:F6:96:17:85:5E:7C
 "web1.localdomain" (SHA256) 9D:49:DE:46:1C:0F:40:19:9B:55:FC:97:69:E9:2B:C4:93:D8:A6:3C:B8:AB:CB:DD:E6:F5:A0:9C:37:C8:66:A0

Ein "+" vor einem Zertifikat zeigt an, dass es signiert wurde. Das Fehlen eines Pluszeichens zeigt an, dass unser neues Zertifikat noch nicht unterzeichnet wurde.

Anfragen unterschreiben

Verwenden Sie zum Signieren einer einzelnen Zertifikatanforderung den Befehl + puppet cert sign + mit dem Hostnamen des Zertifikats, wie er in der Zertifikatanforderung angezeigt wird.

Um beispielsweise das Zertifikat von db1 zu signieren, verwenden Sie den folgenden Befehl:

sudo /opt/puppetlabs/bin/puppet cert sign

Eine Ausgabe ähnlich dem folgenden Beispiel zeigt an, dass die Zertifikatsanforderung signiert wurde:

Output:Notice: Signed certificate request for
Notice: Removing file Puppet::SSL::CertificateRequest  at '/etc/puppetlabs/puppet/ssl/ca/requests/.pem'

Der Puppet-Master kann nun den Knoten, zu dem das signierte Zertifikat gehört, kommunizieren und steuern. Sie können auch alle aktuellen Anfragen auf einmal signieren.

Wir werden die Option "+ - alle +" verwenden, um das verbleibende Zertifikat zu signieren:

sudo /opt/puppetlabs/bin/puppet cert sign --all

Nachdem alle Zertifikate signiert sind, kann Puppet die Infrastruktur verwalten. Weitere Informationen zum Verwalten von Zertifikaten finden Sie im Spickzettel Wie verwalte ich Puppet 4-Zertifikate?.

Schritt 5 - Überprüfen der Installation

Puppet verwendet eine domänenspezifische Sprache, um die Systemkonfigurationen zu beschreiben. Diese Beschreibungen werden in Dateien mit der Bezeichnung "Manifeste" gespeichert, die die Dateierweiterung "+ .pp +" haben. Weitere Informationen hierzu finden Sie in der Anleitung Getting Started with Puppet Code: Manifests and Modules. Im Moment erstellen wir jedoch eine kurze Direktive, um zu überprüfen, ob der Puppet Server die Agenten wie erwartet verwalten kann.

Zunächst erstellen wir das Standardmanifest "+ site.pp +" am Standardspeicherort:

sudo nano /etc/puppetlabs/code/environments/production/manifests/site.pp

Wir werden Puppets domänenspezifische Sprache verwenden, um eine Datei mit dem Namen "+ it_works.txt " auf Agentenknoten im Verzeichnis " tmp " zu erstellen, die die öffentliche IP-Adresse des Agentenservers enthält und die Berechtigungen auf " -rw" setzt -r - r - + `:

site.pp Beispiel

file {'/tmp/it_works.txt':                        # resource type file and filename
 ensure  => present,                             # make sure it exists
 mode    => '0644',                              # file permissions
 content => "It works on ${ipaddress_eth0}!\n",  # Print the eth0 IP fact
}

Standardmäßig führt Puppet Server die Befehle in seinen Manifesten alle 30 Minuten aus. Wenn die Datei entfernt wird, wird sie durch die Direktive "+ sure " neu erstellt. Die Direktive " mode " legt die Dateiberechtigungen fest, und die Direktive " content +" fügt der Direktive Inhalt hinzu.

Wir können das Manifest auch mit + puppet agent --test auf einem einzelnen Knoten testen. Beachten Sie, dass "+ - Test" kein Flag für einen Trockenlauf ist. Wenn dies erfolgreich ist, wird die Agentenkonfiguration geändert.

Anstatt darauf zu warten, dass der Puppenspieler die Änderungen anwendet, wenden wir das Manifest jetzt auf "+ db1 +" an:

sudo /opt/puppetlabs/bin/puppet agent --test

Die Ausgabe sollte ungefähr so ​​aussehen:

OutputInfo: Using configured environment 'production'
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Loading facts
Info: Caching catalog for db1.localdomain
Info: Applying configuration version '1481131595'
Notice: /Stage[main]/Main/File[/tmp/it_works.txt]/ensure: defined content as '{md5}acfb1c7d032ed53c7638e9ed5e8173b0'
Notice: Applied catalog in 0.03 seconds

Wenn dies erledigt ist, überprüfen wir den Inhalt der Datei:

cat /tmp/it_works.txt
Output It works on !

Wiederholen Sie diesen Vorgang für "+ web1 +" oder versuchen Sie es nach einer halben Stunde erneut, um sicherzustellen, dass der Puppet Master automatisch ausgeführt wird.

Herzliche Glückwünsche! Sie haben Puppet erfolgreich im Master / Agent-Modus installiert.

Fazit

Nachdem Sie über eine grundlegende Installation von Agent / Master Puppet verfügen, erfahren Sie, wie Sie Puppet zum Verwalten Ihrer Serverinfrastruktur verwenden. Schauen Sie sich das folgende Tutorial an: Getting Started With Puppet Code: Manifests and Modules.