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.
- Cygwin (nur wenn Sie Windows verwenden)
- Virtualbox Download
- Vagrant Download
- Git Download
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:
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.
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
C:\Windows\System32\drivers\etc\hosts
erweitert werden unter Linux die Datei
/etc/hosts
Folgender Eintrag sollte in der jeweiligen Datei ergänzt werden:
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
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.
vagrant ssh puppet
Dann Starten wir in dieser Umgebung den Puppet Server mit:
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:
- Erstellen eines Zertifikats auf dem Klienten.
- Übermitteln des Zertifikats an den Server.
- Signieren des Zertifikats auf dem Server.
- 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:
vagrant ssh client1
Um ein Zertifikat zu erstellen und an den Server zu übermitteln gibt man folgendes Kommando in “client1” ein:
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:
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:
sudo /opt/puppetlabs/bin/puppet cert sign client1.v.bbvsws.de
alternativ werden alle zu signierenden Zertifikate mit dem Befehl
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:
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:
vagrant ssh client1
und führt dann den Befehl
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:
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
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
vagrant ssh puppet
und checkt dann per
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:
sudo su cd /etc/puppetlabs/code/environments rm -rf production ln -s /home/vagrant/puppet_bbv production
Durch Ausführen des Kommandos
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.