Entwicklungsumgebungen 
Packer, Vagrant, Puppet 
Alexander Pacnik 
Mannheim, 10.11.2014
2 
inovex 
... über inovex und den Referenten
3 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwende...
4 
Entwicklungsumgebungen 
... Einführung 
Aufgaben 
‣ Entwicklungsumgebung bereitstellen (Development) 
‣ Abnahmeumgebung...
5 
Entwicklungsumgebungen 
... Einführung 
Herausforderungen 
‣ Continuous Integration – Code ständig integrieren und test...
Packer 
... Was ist Packer? 
Ziel 
‣ Packer is a tool for creating identical machine images for multiple platforms from a ...
7 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwende...
8 
Packer 
... das heutige Beispiel in der Übersicht
Packer 
... die Struktur der Packer Templates 
Quelle: https://packer.io/docs/templates/configuration-templates.html 9
1. Builder 
... die Installation der VM 
Builder 
‣ beschreiben die virtuelle Infrastruktur auf der die Images erstellt we...
1. Builder 
... Beispiel: Virtualbox 
Quelle: https://packer.io/docs/templates/builders.html 11
2. Provisioners 
... die Konfiguration der VM 
Provisioners 
‣ Skripte die nach der Betriebssysteminstallation aufgerufen ...
2. Provisioners 
... Beispiel 
Quelle: https://packer.io/docs/templates/provisioners.html 13
3. Post-Processors 
... die virtuelle Maschine paketieren 
post-processors 
‣ Aktionen die nach der Erstellung ausgeführt ...
3. Post-Processors 
... Beispiel: die virtuelle Maschine für Vagrant paketieren 
Quelle: https://packer.io/docs/templates/...
4. Variables 
... Der Umgang mit dynamischen Templates 
‣ Variablen definieren 
‣ Variablen verwenden 
Quelle: https://pac...
4. Variables 
... Beispiel: Datei für versionsspezifische Konfigurationen 
Quelle: https://packer.io/docs/templates/user-v...
4. Variables 
... Beispiel: Wert einer Variablen in die virtuelle Maschine durch reichen 
1. Variable im Template definier...
19 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwend...
20 
Packer verwenden 
... Code testen und Image erstellen
21 
Packer Debugging 
... wenn Fehler auftreten 
‣ im JSON Template kann der Parameter “headless” auf “false” gesetzt werd...
22 
Packer 
... Fazit 
Packer 
‣ Maschine Images von DEV bis Prod mit den gleichen Code erstellen 
‣ Nur den minimal notwe...
23 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwend...
24 
Vagrant 
... Überblick 
Vagrant Vorteile 
‣ Steuert lokale Virtualbox oder VMware Installation 
‣ Lokale Entwicklungsu...
25 
Vagrant 
... Beispiel: Vagrantfile zum testen der Packer Artefakte
26 
Vagrant 
... Das neue Image testen
Vagrant 
... Beispiel: Vagrantfile zum testen von Puppet Code 
Puppet mit Packer verwenden 
‣ Am einfachsten ist es Puppet...
28 
Vagrant 
... Fazit 
Takeaway 
‣ Packer: ideal zum Erstellen von Images, als Baseline für Projekte 
‣ Puppet: übernimmt...
29 
Vielen Dank für Ihre Aufmerksamkeit 
Kontakt 
Alexander Pacnik 
IT Engineering & Operations 
Project Management 
inove...
30 
Anhang 
Lizenz des Vortrags 
‣ Creative Commons (by-nc-nd)
Nächste SlideShare
Wird geladen in …5
×

Entwicklungsumgebungen - Packer, Vagrant, Puppet

528 Aufrufe

Veröffentlicht am

Continuous Delivery Pipelines setzen identische Konfigurations- und Deployment-Prozesse von Entwicklung bis Betrieb voraus. Um diese zu ermöglichen, zeigt der Referent, wie virtuelle Maschinen (Linux/Windows) mit Packer (packer.io) erstellt, mit Puppet konfiguriert und mit Vagrant in virtuellen Umgebungen verwendet werden. Der Fokus liegt zum einen auf der einfachen und schnellen Verwendung vorkonfigurierter VMs für die lokale Entwicklung und zum anderen auf den Herausforderungen und Erfahrungen, die sich bei der Verwendung von Puppet ergeben, wenn der gleiche Konfigurations-Code für verschiedene Umgebungen verwendet wird.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
528
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
2
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Entwicklungsumgebungen - Packer, Vagrant, Puppet

  1. 1. Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander Pacnik Mannheim, 10.11.2014
  2. 2. 2 inovex ... über inovex und den Referenten
  3. 3. 3 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  4. 4. 4 Entwicklungsumgebungen ... Einführung Aufgaben ‣ Entwicklungsumgebung bereitstellen (Development) ‣ Abnahmeumgebung bereitstellen (QA) ‣ Produktionsumgebung bereitstellen (Operations)
  5. 5. 5 Entwicklungsumgebungen ... Einführung Herausforderungen ‣ Continuous Integration – Code ständig integrieren und testen ‣ Continuous Delivery – vollständige Automatisierung der Prozesse und Tests ‣ Dev / Prod Parity – Werkzeuge und Prozesse der Umgebungen identisch halten ‣ Infrastructure as Code – Nachvollziehbarkeit, alles kommt aus einem Repository
  6. 6. Packer ... Was ist Packer? Ziel ‣ Packer is a tool for creating identical machine images for multiple platforms from a single source configuration. 1 ‣ Dieser Vortrag zeigt die Verwendung von Packer zur Erstellung von lokalen Entwicklungsumgebungen ‣ Beispiel: Image erstellen ‣ Beispiel: Image mit Vagrant verwenden 1 Quelle: packer.io 6
  7. 7. 7 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  8. 8. 8 Packer ... das heutige Beispiel in der Übersicht
  9. 9. Packer ... die Struktur der Packer Templates Quelle: https://packer.io/docs/templates/configuration-templates.html 9
  10. 10. 1. Builder ... die Installation der VM Builder ‣ beschreiben die virtuelle Infrastruktur auf der die Images erstellt werden sollen ‣ Unterstützt werden: Virtualbox, VMware, Amazon AWS, ... Vorgehen 1. Startet die VM auf der entsprechenden Plattform 2. Startet die Betriebssysteminstallation (Kickstart, Boostrap oder Unattended.xml) 3. Wartet auf den SSH Login Quelle: https://packer.io/docs/templates/builders.html 10
  11. 11. 1. Builder ... Beispiel: Virtualbox Quelle: https://packer.io/docs/templates/builders.html 11
  12. 12. 2. Provisioners ... die Konfiguration der VM Provisioners ‣ Skripte die nach der Betriebssysteminstallation aufgerufen werden können ‣ Unterstützt werden: Shell, Puppet, Chef, Salt, ... Vorgehen 1. Ruft einen oder mehrere Provisioner Blöcke in der entsprechenden Reihenfolge auf Quelle: https://packer.io/docs/templates/provisioners.html 12
  13. 13. 2. Provisioners ... Beispiel Quelle: https://packer.io/docs/templates/provisioners.html 13
  14. 14. 3. Post-Processors ... die virtuelle Maschine paketieren post-processors ‣ Aktionen die nach der Erstellung ausgeführt werden ‣ Unterstützt werden: Vagrant, Docker, ... Vorgehen (Vagrant) 1. Virtuelle Maschine stoppen 2. Dateien komprimieren Quelle: https://packer.io/docs/templates/post-processors.html 14
  15. 15. 3. Post-Processors ... Beispiel: die virtuelle Maschine für Vagrant paketieren Quelle: https://packer.io/docs/templates/post-processors.html 15
  16. 16. 4. Variables ... Der Umgang mit dynamischen Templates ‣ Variablen definieren ‣ Variablen verwenden Quelle: https://packer.io/docs/templates/user-variables.html 16
  17. 17. 4. Variables ... Beispiel: Datei für versionsspezifische Konfigurationen Quelle: https://packer.io/docs/templates/user-variables.html 17
  18. 18. 4. Variables ... Beispiel: Wert einer Variablen in die virtuelle Maschine durch reichen 1. Variable im Template definieren 2. Variable im Template als Environment Variable der VM bekannt machen 3. Variable über den Aufruf beim Start übergeben 4. Variable kann dann in Provisioner-Skripten ganz normal verwendet werden Quelle: https://packer.io/docs/templates/user-variables.html 18
  19. 19. 19 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  20. 20. 20 Packer verwenden ... Code testen und Image erstellen
  21. 21. 21 Packer Debugging ... wenn Fehler auftreten ‣ im JSON Template kann der Parameter “headless” auf “false” gesetzt werden, um die Virtualbox Console anzuzeigen ‣ ssh in die virtuelle Maschnine während Packer läuft (Port wird am Anfang im Output angezeigt: “ssh -p nnnn root@127.0.0.1”) ‣ da die VM am Ende der Provisionierung ausgeschaltet wird, sollte ein sleep am Ende eines der Shell Skripte eingebaut werden, um genug Zeit für das Debugging per SSH zu haben. ‣ Packer Debug Logging kann mit der Umgebungsvariable PACKER_LOG=irgend_ein_Wert aktiviert werden
  22. 22. 22 Packer ... Fazit Packer ‣ Maschine Images von DEV bis Prod mit den gleichen Code erstellen ‣ Nur den minimal notwendigen Code mit Shell Skripten erstellen ‣ Konfigurationsmanagement mit Puppet, Chef, ... umsetzen ‣ Nach Möglichkeit eigene Paket- und ISO-Repositories verwenden ‣ Versions spezifische Konfigurationen auslagern
  23. 23. 23 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  24. 24. 24 Vagrant ... Überblick Vagrant Vorteile ‣ Steuert lokale Virtualbox oder VMware Installation ‣ Lokale Entwicklungsumgebung von einer definierten Baseline starten ‣ Vorinstallierte VMs über einen zentralen Webserver zum Download anbieten
  25. 25. 25 Vagrant ... Beispiel: Vagrantfile zum testen der Packer Artefakte
  26. 26. 26 Vagrant ... Das neue Image testen
  27. 27. Vagrant ... Beispiel: Vagrantfile zum testen von Puppet Code Puppet mit Packer verwenden ‣ Am einfachsten ist es Puppet Module mit einer „tests/init.pp“1 zu versehen, die mit puppet apply ausführbar ist ‣ Idealerweise wird der Puppet Code in Components / Profiles und Roles gegliedert2 Puppet mit Vagrant verwenden 1 Quelle: https://docs.puppetlabs.com/guides/tests_smoke.html 2 Quelle: http://de.slideshare.net/inovex/puppet-designing-modules 27
  28. 28. 28 Vagrant ... Fazit Takeaway ‣ Packer: ideal zum Erstellen von Images, als Baseline für Projekte ‣ Puppet: übernimmt die Konfiguration des Images ‣ Vagrant: ideal um lokale Entwicklungsumgebungen zu steuern ‣ Konfiguration und initiale Installation so weit wie möglich schon mit Packer umsetzen ‣ Images als auch Vagrantfiles immer versioniert in einem Repository ablegen
  29. 29. 29 Vielen Dank für Ihre Aufmerksamkeit Kontakt Alexander Pacnik IT Engineering & Operations Project Management inovex GmbH Ludwig-Erhard-Allee 6 76133 Karlsruhe Mobil: +49 (0)173 3181 040 Mail: alexander.pacnik@inovex.de
  30. 30. 30 Anhang Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)

×