•  
  •  
  •  
  •  
  •  
Anleitung

Wie funktioniert eigentlich Puppet 4.7? Wir haben es getestet

An Puppet, einer der Konfigurationgsmanager für grosse IT-Architekturen, scheint man heute nicht mehr vorbeizukommen. Wir haben ihn getestet.

02.12.2016Text: bbv0 Kommentare
Softwareentwicklung Mann
  •  
  •  
  •  
  •  

bbv München hat sich intensiv mit Puppet 4.7 beschäftigt. Ziel war es, sich Kenntnisse in Puppet anzueignen und eine Ausgangsbasis für neue Projekte zu schaffen. Um Puppet ausprobieren zu können, haben wir deswegen eine Umgebung geschaffen, in der Puppet ausprobiert werden kann.

Puppet Testumgebung

Um ausprobieren zu können, wie Puppet funktioniert, haben wir eine Testumgebung aufgesetzt. Um die Verwendung möglichst einfach zu gestalten, basiert die Umgebung auf Vagrant und Virtualbox.

Vorbereiten des eigenen PCs

Um unsere Testumgebung aufzusetzen und verwenden zu können, sind einige Vorbereitungen auf den entsprechenden PC notwendig.

Installieren benötigter Software

Sofern noch nicht installiert, muss auf dem PC sowohl virtualbox als auch vagrant und git installiert werden. Die entsprechenden aktuellen Softwarepakete können auf den Seiten des jeweiligen Projekts heruntergeladen werden.

Dabei bitte jeweils die für das individuelle Betriebssystem angedachte Version herunterladen und installieren.

Nur für Windows Nutzer

Wenn Sie Windows benutzen, installieren Sie bitte cygwin. Danach sollten Sie das cygwin Terminal verwenden, da nur so von Windows die notwendigen Zusatzkomponenten auch erkannt und verwendet werden.

Tipp: Wollen Sie auf die Festplatte zugreifen unter cygwin, geben Sie Folgendes ein:

1
cd /cygdrive/c/

Durch die Tabulator-Taste steht eine automatische Vervollständigung zur Verfügung, sofern der Pfad dann eindeutig ist.

Aufsetzen der Testumgebung

Um nun die Testumgebung aufsetzen zu können, müssen Sie lediglich unser github projekt dazu auschecken.

1
git clone https://github.com/bbvSoftwareServices/puppet_environment.git

Nun sollten Sie ein Terminal Fenster öffnen und in das Verzeichnis wechseln, in das Sie dieses Projekt eben ausgecheckt haben.

Bevor wir nun die Testumgebung starten, müssen wir noch die Namensauflösung für die verwendeten virtuellen Maschinen einrichten. Dies variiert in Abhängigkeit Ihres Betriebssystem. Unter Windows 10 muss die Datei

1
C:\Windows\System32\drivers\etc\hosts

erweitert werden unter Linux die Datei

1
/etc/hosts

Folgender Eintrag sollte in der jeweiligen Datei ergänzt werden:

1
2
3
192.168.179.12 puppet.v.bbvsws.de
192.168.179.13 client1.v.bbvsws.de
192.168.179.14 client2.v.bbvsws.de

Dadurch sind die jeweiligen virtuellen Maschinen dann unter einem Namen lokal auf Ihrem PC erreichbar und nicht nur per IP Adresse.

Starten der Umgebung

Nachdem diese Änderung gespeichert ist, sollten Sie eine Konsole/Terminal öffnen und in das Verzeichnis wechseln, in dass sie unsere Testumgebung per Git ausgechecked haben.
Durch den Befehl

1
vagrant up

wird die Einrichtung der Testumgebung gestartet. Es werden nun mehrere hundert MB an Daten aus dem Internet heruntergeladen um die Umgebung einzurichten.
Es werden drei virtuelle Maschinen eingerichtet. Die Maschinen tragen die Namen „puppet“, „client1“ beziehungweise „client2“.

Die Maschine „puppet“

Für alle nachfolgenden Aktionen müssen Sie sich in dem Verzeichnis befinden, in dass Sie dieses Git Projekt ausgechecked haben.

Diese Maschine ist unser Server für Puppet und muss nun dafür vorbereitet werden.
Dafür melden wir uns per ssh an.

1
vagrant ssh puppet

Dann Starten wir in dieser Umgebung den Puppet Server mit:

1
sudo service puppetserver start

Der Start des Servers kann einige Zeit beanspruchen. Insofern muss auf das Terminal prompt etwas gewartet werden.
Die Maschinen „client1“ und „client2“

Diese Maschinen dienen als Testklienten und müssen dafür eingerichtet werden um als Klient verwendet werden zu können. Exemplarisch wird die Einrichtung an „client1“ beschrieben. Der „client2“ kann analog eingerichtet werden. Damit ein Puppetklient von einem Puppetserver mit Arbeitsaufträgen versorgt und verwaltet wird muss der Klient registriert werden. Dies setzt sich aus folgenden Schritten zusammen:

  1. Erstellen eines Zertifikats auf dem Klienten.
  2. Übermitteln des Zertifikats an den Server.
  3. Signieren des Zertifikats auf dem Server.
  4. Abhohlen und Speichern des signierten Zertifikats durch den Klienten.

Dadurch wird verhindert, dass ungewollt weitere, unbekannte Klienten an einem Puppetserver registriert werden können.

Um die Arbeit nun zu vereinfachen, sollte für „client1“ ein weiteres Terminal geöffnet werden, dass sich im Projektverzeichnis befindet.

Als erstes ist es nun notwendig sich auf „client1“ anzumelden. Das geschieht durch:

1
vagrant ssh client1

Um ein Zertifikat zu erstellen und an den Server zu übermitteln gibt man folgendes Kommando in „client1“ ein:

1
sudo /opt/puppetlabs/bin/puppet agent --test --server puppet.v.bbvsws.de

Die nächsten Schritte werden nun auf dem Puppetserver – Maschine „puppet“ – durchgeführt.

Als erstes prüfen wir ob die Anfrage zur Signatur des Zertifikats auch richtig angekommen ist. Dafür verwenden wir das Kommando:

1
sudo /opt/puppetlabs/bin/puppet cert list

Dieser Befehl gibt auf dem Puppetserver an welche Zertifikate darauf warten vom Puppetserver signiert zu werden. In dieser Liste sollte der client1
auftauchen.

Als Nächstes muss dieses Zertifikat signiert werden.

Folgender Befehl auf dem Puppetserver veranlasst dies:

1
sudo /opt/puppetlabs/bin/puppet cert sign client1.v.bbvsws.de

alternativ werden alle zu signierenden Zertifikate mit dem Befehl

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

signiert.

Der nächste Schritt findet wieder auf dem Klienten statt. Das signierte Zertifikat muss nun vom Klienten importiert werden damit der Registrationsprozess abgeschlossen ist.
Dazu gibt man folgende Befehle auf dem betroffenen Klienten ein:

1
2
3
sudo /opt/puppetlabs/bin/puppet agent --test --server puppet.v.bbvsws.de

sudo /opt/puppetlabs/bin/puppetdb ssl-setup -f

Damit ist die Einrichtung von „client1“ abgeschlossen. Für „client2“ kann diese Prozedur analog wiederhohlt werden.

Aktualisieren des Klienten

Da die Umgebung dazu gedacht ist mit Puppet erste Erfahrungen zu sammeln aktualisieren sich die Puppetklienten nicht automatisch.
Der Aktualisierungsprozess auf dem Klienten muss deswegen manuell angestoßen werden. Dazu meldet man sich am Klienten an per:

1
vagrant ssh client1

und führt dann den Befehl

1
udo /opt/puppetlabs/bin/puppet agent --test --server puppet.v.bbvsws.de

aus.
Während der Client nun über Puppet aktualisiert wird, sieht man in den Ausgaben, was alles geschieht und kann sich mit Puppet vertraut machen, ohne seinen eigenen PC dadurch zu verunstalten.

Will man wieder von vorne beginnen, so muss lediglich der Befehl:

1
vagrant destroy

im Projektverzeichnis eingegeben werden. Dann wird man um die Bestätigung gebeten, dass das zerstören der jeweiligen virtuellen Maschinen wirklich gewollt ist.
Damit dies funktioniert darf man in dem entsprechenden Konsole nicht in einer virtuellen Maschine angemeldet sein.

Mit

1
vagrant up

kann man dann wieder von vorne anfangen und es wird die Umgebung wieder neu aufgebaut.

Verwenden der Testumgebung

Nachdem eine Testumgebung für Puppet zur Verfügung steht, benötigt man noch ein Basissetup, um die Funktionalität von Puppet überprüfen zu können. Aktuell steht zwar eine Puppet-Testumgebung zur Verfügung, allerdings tut sich nicht viel, wenn man Puppet ausprobiert. Um dies zu ändern, steht das Projekt „puppet_bbv“ zur Verfügung.
Dieses Projekt kann verwendet werden, um zu überprüfen ob das Setup der Puppet-Testumgebung tatsächlich funktioniert hat. Zum Durchführen dieses Tests meldet man sich am Puppetserver an

1
vagrant ssh puppet

und checkt dann per

1
git clone checkout https://github.com/bbvSoftwareServices/puppet_bbv.git

das Testprojekt aus.

Damit der Server diese Komponenten in die Verteilung aufnimmt muss folgendes gemacht werden:

1
2
3
4
sudo su
cd /etc/puppetlabs/code/environments
rm -rf production
ln -s /home/vagrant/puppet_bbv production

Durch Ausführen des Kommandos

1
sudo /opt/puppetlabs/bin/puppet agent --test --server puppet.v.bbvsws.de

auf „client1“ oder „client2“, sofern sie konfiguriert wurden, kann man überprüfen, ob das Ganze funktioniert hat.
Durch das „puppet_bbv“ Repository werden folgende Komponenten auf jedem Klient installiert der sich mit dem Puppetserver verbindet:

1. debconf
2. postgresql in Version 9.6
3. Oracle JDK in Version 8
4. puppet_test_container

Die ersten drei Applikationen sind selbsterklärend. Bei dem „puppet_test_container“ handelt es sich um eine Spring Boot Applikation die als Service auf dem jeweiligen Client („client1“ oder „client2“) installiert wird.

Wir hoffen, dass mit dieser Testumgebung der Zugang zu Puppet vereinfacht wird.

Mit dieser Umgebung kann man nun beginnen sich in Puppet einzuarbeiten und die verschiedenen Tutorials im Internet sich zu Gemüte führen. Hat man sich verrannt oder funktioniert etwas einfach partout nicht mehr, kann diese Umgebung zerstört werden und im Handumdrehen neu aufgesetzt werden.

Unser Wissen im Abo

Artikel kommentieren

Die E-Mail-Adresse wird nicht publiziert. Notwendige Felder sind mit einem * versehen.

Beachtung!

Entschuldigung, bisher haben wir nur Inhalte in English für diesen Abschnitt.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.

Beachtung!

Entschuldigung, bisher haben wir nur Inhalte in English für diesen Abschnitt.

Achtung!

Entschuldigung, bisher haben wir für diesen Abschnitt nur deutschsprachige Inhalte.