SlideShare a Scribd company logo
1 of 30
Download to read offline
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 – verwenden
4 
Entwicklungsumgebungen 
... Einführung 
Aufgaben 
‣ Entwicklungsumgebung bereitstellen (Development) 
‣ Abnahmeumgebung bereitstellen (QA) 
‣ Produktionsumgebung bereitstellen (Operations)
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
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 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwenden
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 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
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 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
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 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
3. Post-Processors 
... Beispiel: die virtuelle Maschine für Vagrant paketieren 
Quelle: https://packer.io/docs/templates/post-processors.html 15
4. Variables 
... Der Umgang mit dynamischen Templates 
‣ Variablen definieren 
‣ Variablen verwenden 
Quelle: https://packer.io/docs/templates/user-variables.html 16
4. Variables 
... Beispiel: Datei für versionsspezifische Konfigurationen 
Quelle: https://packer.io/docs/templates/user-variables.html 17
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 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwenden
20 
Packer verwenden 
... Code testen und Image erstellen
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 
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 
Entwicklungsumgebungen 
... Übersicht 
Einführung 
Packer – Konfiguration 
Packer – Image erstellen 
Vagrant – verwenden
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 
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 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 
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 
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 
Anhang 
Lizenz des Vortrags 
‣ Creative Commons (by-nc-nd)

More Related Content

What's hot

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easyinovex GmbH
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Chris Michael Klinger
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101inovex GmbH
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildoutzerok
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopNETWAYS
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerGregor Biswanger
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Anleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsAnleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsStefan Hilpp
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastrukturinovex GmbH
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtB1 Systems GmbH
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerNicholas Dille
 

What's hot (20)

Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easydocker.io @ CentOS 7 - Secure And Portable Containers Made Easy
docker.io @ CentOS 7 - Secure And Portable Containers Made Easy
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
Tanuki service wrapper_101
Tanuki service wrapper_101Tanuki service wrapper_101
Tanuki service wrapper_101
 
Django & Buildout
Django & BuildoutDjango & Buildout
Django & Buildout
 
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael ProkopOSDC 2013 | Continuous Integration in data centers by Michael Prokop
OSDC 2013 | Continuous Integration in data centers by Michael Prokop
 
MongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen HackerMongoDB: Security-Tipps gegen Hacker
MongoDB: Security-Tipps gegen Hacker
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Anleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsAnleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für Opencms
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
systemd & Docker
systemd & Dockersystemd & Docker
systemd & Docker
 
Serverprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen InfrastrukturServerprovisioning in einer dynamischen Infrastruktur
Serverprovisioning in einer dynamischen Infrastruktur
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Tipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit DockerTipps und Tricks im Umgang mit Docker
Tipps und Tricks im Umgang mit Docker
 

Viewers also liked

Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenVirtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenMarkus Zapke-Gründemann
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickUdo Pracht
 
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay Dresden
 
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der IT
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der ITSLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der IT
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der ITSchlomo Schapiro
 
DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?Digicomp Academy AG
 
Cusy Developer-Baukasten
Cusy Developer-BaukastenCusy Developer-Baukasten
Cusy Developer-Baukastencusy GmbH
 

Viewers also liked (9)

Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauenVirtuelle Maschinen mit Packer, Vagrant und Salt bauen
Virtuelle Maschinen mit Packer, Vagrant und Salt bauen
 
Advanced Continuous Integration
Advanced Continuous IntegrationAdvanced Continuous Integration
Advanced Continuous Integration
 
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und ÜberblickOOP 2012 - Udo Pracht - DevOps Einführung und Überblick
OOP 2012 - Udo Pracht - DevOps Einführung und Überblick
 
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
DevDay 2016 - Jan Dittberner - Continous Delivery - Aber sicher?!
 
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der IT
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der ITSLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der IT
SLAC2011 DevOps - Neue Arbeitsweise nnd Selbstverständnis in der IT
 
DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?
 
Cusy Developer-Baukasten
Cusy Developer-BaukastenCusy Developer-Baukasten
Cusy Developer-Baukasten
 
Tech Talk - Vagrant
Tech Talk - VagrantTech Talk - Vagrant
Tech Talk - Vagrant
 
DevOps jenseits der Tools
DevOps jenseits der ToolsDevOps jenseits der Tools
DevOps jenseits der Tools
 

Similar to Entwicklungsumgebungen - Packer, Vagrant, Puppet

Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...B1 Systems GmbH
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Managementinovex GmbH
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Dockergedoplan
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows ContainerThomas Wilhelm Wiefel
 
Puppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und BasismodulePuppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und Basismoduleinovex GmbH
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python DevelopmentMartin Christen
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumNicholas Dille
 
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwaltenDevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwaltenDevDay Dresden
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020Stephan Kaps
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenHendrik Lösch
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerB1 Systems GmbH
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfSyahri Ramadhan
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit JujuFrank Müller
 

Similar to Entwicklungsumgebungen - Packer, Vagrant, Puppet (20)

Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
Docker und Virtualisierung - Container Use Cases für eine isolierte, performa...
 
Opensource Tools für das Data Center Management
Opensource Tools für das Data Center ManagementOpensource Tools für das Data Center Management
Opensource Tools für das Data Center Management
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Einführung in Docker
Einführung in DockerEinführung in Docker
Einführung in Docker
 
Docker for Windows / Windows Container
Docker for Windows / Windows ContainerDocker for Windows / Windows Container
Docker for Windows / Windows Container
 
Puppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und BasismodulePuppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und Basismodule
 
Docker for Python Development
Docker for Python DevelopmentDocker for Python Development
Docker for Python Development
 
Was gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-UniversumWas gibt es Neues im Docker-Universum
Was gibt es Neues im Docker-Universum
 
Vagrant
VagrantVagrant
Vagrant
 
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwaltenDevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
DevDay 2016: Sascha Askani - Cloud-Umgebungen mit Terraform verwalten
 
In den sicheren Hafen jax2020
In den sicheren Hafen jax2020In den sicheren Hafen jax2020
In den sicheren Hafen jax2020
 
Ionic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf SteroidenIonic 2 - Hybridapps auf Steroiden
Ionic 2 - Hybridapps auf Steroiden
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Ausrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit DockerAusrollen von Multi-Tier-Applikationen mit Docker
Ausrollen von Multi-Tier-Applikationen mit Docker
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdfDockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
Dockerbank II - 03 - Szenarien des Routinebetriebs (aktualisiert).pdf
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit Juju
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 

More from inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

More from inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
 

Entwicklungsumgebungen - Packer, Vagrant, Puppet

  • 1. Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander Pacnik Mannheim, 10.11.2014
  • 2. 2 inovex ... über inovex und den Referenten
  • 3. 3 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  • 4. 4 Entwicklungsumgebungen ... Einführung Aufgaben ‣ Entwicklungsumgebung bereitstellen (Development) ‣ Abnahmeumgebung bereitstellen (QA) ‣ Produktionsumgebung bereitstellen (Operations)
  • 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. 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 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  • 8. 8 Packer ... das heutige Beispiel in der Übersicht
  • 9. Packer ... die Struktur der Packer Templates Quelle: https://packer.io/docs/templates/configuration-templates.html 9
  • 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. 1. Builder ... Beispiel: Virtualbox Quelle: https://packer.io/docs/templates/builders.html 11
  • 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. 2. Provisioners ... Beispiel Quelle: https://packer.io/docs/templates/provisioners.html 13
  • 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. 3. Post-Processors ... Beispiel: die virtuelle Maschine für Vagrant paketieren Quelle: https://packer.io/docs/templates/post-processors.html 15
  • 16. 4. Variables ... Der Umgang mit dynamischen Templates ‣ Variablen definieren ‣ Variablen verwenden Quelle: https://packer.io/docs/templates/user-variables.html 16
  • 17. 4. Variables ... Beispiel: Datei für versionsspezifische Konfigurationen Quelle: https://packer.io/docs/templates/user-variables.html 17
  • 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 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  • 20. 20 Packer verwenden ... Code testen und Image erstellen
  • 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 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 Entwicklungsumgebungen ... Übersicht Einführung Packer – Konfiguration Packer – Image erstellen Vagrant – verwenden
  • 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 Vagrant ... Beispiel: Vagrantfile zum testen der Packer Artefakte
  • 26. 26 Vagrant ... Das neue Image testen
  • 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 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 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 Anhang Lizenz des Vortrags ‣ Creative Commons (by-nc-nd)