SlideShare une entreprise Scribd logo
1  sur  3
Télécharger pour lire hors ligne
 
Problemstellung	
  
Ein	
   häufiges	
   Problem	
   beim	
   Integrieren	
   neuer	
  
Entwickler	
   in	
   bestehende	
   Software-­‐
Entwicklungsprojekte	
   stellt	
   das	
   initiale	
   Aufsetzen	
  
der	
  benötigten	
  Tools	
  und	
  Technologien	
  dar,	
  die	
  für	
  
das	
  Ausführen	
  der	
  Anwendung	
  nötig	
  ist.	
  Während	
  
Quellcode	
   und	
   Dokumentation	
   in	
   der	
   Regel	
   an	
  
einem	
   zentralen	
   Ort	
   für	
   alle	
   frei	
   zugänglich	
   sind,	
  
trifft	
  dies	
  bei	
  ganzen	
  Umgebungen	
  eher	
  selten	
  zu.	
  
Um	
   ihre	
   Anwendung	
   regelmäßig	
   lokal	
   zu	
   testen,	
  
sind	
  die	
  Entwickler	
  beim	
  Aufsetzen	
  der	
  Umgebung	
  
meist	
   auf	
   sich	
   allein	
   gestellt.	
   In	
   einer	
   typischen	
  
Webanwendung	
   sind	
   die	
   eingesetzten	
  
Applikationsserver	
   und	
   Datenbanken	
   den	
  
Entwicklern	
   zwar	
   bekannt,	
   doch	
   nicht	
   zwingend	
  
auch	
   die	
   eingesetzten	
   Versionen.	
   Eben	
   diese	
  
Unschärfe	
  führt	
  dazu,	
  dass	
  bei	
  einem	
  Entwickler	
  die	
  
Anwendung	
   fehlerfrei	
   läuft,	
   bei	
   einem	
   anderen	
  
jedoch	
  nicht.	
  Dies	
  resultiert	
  in	
  unnötigem	
  Aufwand	
  
für	
   sowohl	
   das	
   initiale	
   Aufsetzen,	
   als	
   auch	
   das	
  
Finden	
  von	
  Fehlern.	
  
Lösung	
  
Um	
  neuen	
  Entwicklern	
  den	
  Einstieg	
  zu	
  vereinfachen	
  
und	
   die	
   Fehlerquellen	
   zu	
   reduzieren,	
   ist	
   es	
  
naheliegend	
   neben	
   dem	
   Quellcode	
   und	
   der	
  
Dokumentation	
   auch	
   die	
   vollständige	
   Umgebung	
  
zentral	
   bereitzustellen.	
   In	
   dieser	
   sind	
   alle	
  
Komponenten	
   bereits	
   enthalten,	
   wodurch	
   jede	
  
Umgebung	
   vollständig	
   identisch	
   zu	
   jeder	
   anderen	
  
ist	
  -­‐	
  im	
  Idealfall	
  sogar	
  zur	
  Produktionsumgebung.	
  
Mittels	
   Virtualisierung	
   lässt	
   sich	
   eben	
   dies	
  
erreichen.	
   Ein	
   zentrales	
   Repository	
   verwaltet	
   die	
  
Konfiguration	
   der	
   Umgebung	
   (die	
   sogenannte	
  
Appliance),	
   mittels	
   derer	
   virtuelle	
   Maschinen	
  
provisioniert	
   und	
   fertig	
   konfiguriert	
   werden	
  
können.	
  
	
  
Implementierung	
  
Zur	
   Implementierung	
   dieser	
   Lösung	
   bietet	
   sich	
  
Vagrant	
  [1]	
  an.	
  Vagrant	
  ist	
  ein	
  Tool	
  spezialisiert	
  auf	
  
das	
   Erstellen	
   und	
   Konfigurieren	
   von	
   virtuellen	
  
Maschinen.	
   Dabei	
   instanziiert	
   Vagrant	
   die	
  
Virtualisierung	
   ermöglicht	
   es	
   auf	
   einer	
   bestehenden	
   Plattform,	
   dem	
   sogenannten	
   Hostsystem,	
   virtuelle	
  
Hardware	
   bereitzustellen.	
   So	
   können	
   auf	
   ein	
   und	
   derselben	
   Hardware	
   mehrere	
   virtuelle	
   Maschinen	
   (VMs)	
  
parallel	
  laufen,	
  die	
  dennoch	
  vollständig	
  voneinander	
  isoliert	
  sind.	
  Nicht	
  zuletzt	
  ist	
  es	
  genau	
  diese	
  Technologie,	
  die	
  
das	
  Cloud	
  Computing	
  ermöglicht	
  hat.	
  In	
  großen	
  Datenzentren	
  werden	
  VMs	
  provisioniert	
  und	
  den	
  Kunden	
  zur	
  
Verfügung	
  gestellt,	
  die	
  diese	
  dann	
  individuell	
  anpassen	
  können.	
  
Virtualisierte	
  Umgebungen	
  mit	
  Vagrant	
  
Maschinen	
   nicht	
   selbst,	
   sondern	
   delegiert	
   diese	
  
Aufgabe	
   an	
   sog.	
   Provisioner	
   wie	
   bspw.	
   Oracle	
  
VirtualBox	
   [2].	
   Eine	
   zentrale	
   Konfigurationsdatei	
  
(das	
  Vagrantfile)	
  ist	
  ausreichend	
  um	
  mittels	
  Vagrant	
  
die	
  VM	
  erstellen	
  zu	
  lassen:	
  
	
  
	
  
Die	
  Appliance	
  oder	
  auch	
  Box	
  zum	
  Bau	
  der	
  virtuellen	
  
Maschine	
   kann	
   direkt	
   von	
   einem	
   Webserver	
  
bezogen	
  werden.	
  Mittels	
  des	
  Vagrantfiles	
  kann	
  die	
  
virtuelle	
  Maschine	
  nun	
  beliebig	
  angepasst	
  werden,	
  
bspw.	
   um	
   die	
   verfügbare	
   virtuelle	
   Hardware	
   zu	
  
ändern	
  oder	
  das	
  Netzwerk	
  zu	
  konfigurieren.	
  Mittels	
  
hinterlegter	
   Skripte	
   oder	
   Tools	
   wie	
   Chef	
   [3]	
   oder	
  
Puppet	
   [4]	
   (sog.	
   Provisioner)	
   lassen	
   sich	
   die	
  
virtuellen	
   Maschinen	
   bis	
   ins	
   Detail	
   anpassen.	
   So	
  
können	
   Pakte	
   installiert,	
   Server	
   konfiguriert	
   oder	
  
neue	
  Nutzer	
  angelegt	
  werden:	
  
	
  
	
  	
  	
  	
  	
  
	
  
Somit	
   benötigen	
   Entwickler	
   nicht	
   mehr	
   als	
   die	
  
Konfigurationsdatei	
   und	
   eine	
   Installation	
   von	
  
Vagrant.	
   Ein	
   einfaches	
   vagrant	
  up	
   ist	
   ausreichend	
  
um	
   die	
   Maschine	
   erstellen,	
   konfigurieren	
   und	
  
starten	
   zu	
   lassen.	
   Auf	
   diese	
   kann	
   nun	
   mittels	
   SSH	
  
direkt	
   zugegriffen	
   werden.	
   Ebenfalls	
   lassen	
   sich	
  
lokale	
  Ordner	
  in	
  die	
  virtuelle	
  Maschine	
  spiegeln.	
  So	
  
werden	
  Updates	
  auf	
  den	
  lokalen	
  Dateien	
  sofort	
  in	
  
der	
  virtuellen	
  Umgebung	
  sichtbar.	
  
	
  
Vorteile	
  
Der	
   Einsatz	
   von	
   Virtualisierung	
   im	
   beschriebenen	
  
Szenario	
   erlaubt	
   es	
   Entwicklern	
   viel	
   schneller	
  
produktiv	
  zu	
  sein.	
  Der	
  Aufwand	
  zum	
  Aufsetzen	
  der	
  
Umgebung	
   fällt	
   nun	
   nur	
   noch	
   beim	
   Erstellen	
   der	
  
Konfiguration	
   einmalig	
   an.	
   Im	
   Falle	
   von	
   Updates	
  
kann	
   die	
   virtuelle	
   Maschine	
   einfach	
   gestoppt	
   und	
  
mit	
  der	
  neuen	
  Konfiguration	
  neu	
  gestartet	
  werden.	
  
Genau	
   diese	
   Tatsache	
   macht	
   das	
   Experimentieren	
  
mit	
  neuen	
  Versionen	
  viel	
  weniger	
  riskant.	
  So	
  kann	
  
einfach	
   eine	
   neue	
   Komponente	
   in	
   der	
   virtuellen	
  
Maschine	
   installiert	
   und	
   getestet	
   werden.	
   Führt	
  
dies	
   zu	
   Fehlern,	
   wird	
   die	
   bestehende	
   VM	
   einfach	
  
verworfen	
  und	
  eine	
  neue	
  gestartet.	
  Dies	
  dauert	
  in	
  
der	
   Regel	
   nicht	
   länger	
   als	
   fünf	
   Minuten.	
   Das	
  
Phänomen,	
   dass	
   Anwendungen	
   bei	
   einem	
  
Entwickler	
   lokal	
   fehlerfrei	
   laufen,	
   bei	
   einem	
  
anderen	
   jedoch	
   nicht,	
   lässt	
   sich	
   hinsichtlich	
   der	
  
Umgebung	
   nun	
   auch	
   ausschließen.	
   Die	
   virtuellen	
  
Maschinen	
   können	
   lokal	
   ausgeführt	
   werden	
   –	
   sie	
  
können	
   aber	
   ebenso	
   auf	
   dedizierte	
   Hardware	
   der	
  
jeweiligen	
   Firma	
   oder	
   sogar	
   in	
   der	
   Cloud	
  
provisioniert	
  werden.	
  Somit	
  skaliert	
  dieser	
  Ansatz	
  je	
  
nach	
   Größe	
   und	
   Bedarf	
   des	
   jeweiligen	
  
Unternehmens.	
  
	
  
Konsequenzen	
  
Jedoch	
  gibt	
  es	
  auch	
  bei	
  diesem	
  Ansatz	
  Punkte,	
  die	
  
zu	
   bedenken	
   sind.	
   So	
   muss	
   die	
   entsprechende	
  
Infrastruktur	
   initial	
   aufgebaut	
   werden,	
   und	
   die	
  
Appliances	
   müssen	
   konfiguriert	
   werden.	
   Auch	
  
Vagrant	
   selbst	
   wird	
   stetig	
   weiterentwickelt,	
  
wodurch	
   es	
   zu	
   verschiedenen	
   Versionen	
   kommt.	
  
Wohingegen	
   sich	
   der	
   beschriebene	
   Workflow	
   bei	
  
neuen	
  Projekten	
  sehr	
  gut	
  einsetzen	
  lässt,	
  bedarf	
  es	
  
mehr	
  Aufwand	
  beim	
  Ändern	
  bestehender	
  Abläufe.	
  
Das	
   Versionsproblem	
   von	
   Vagrant	
   selbst	
   wird	
  
dadurch	
   adressiert,	
   dass	
   die	
   Konfiguration	
  
unabhängig	
  von	
  der	
  jeweiligen	
  Version	
  ist,	
  und	
  auch	
  
der	
   initiale	
   Aufwand	
   lässt	
   sich	
   mit	
   den	
   zu	
  
erwartenden	
   Einsparungen	
   für	
   das	
   Aufsetzen	
   der	
  
Umgebungen	
   und	
   Beheben	
   von	
   Fehlern	
  
rechtfertigen.	
  
	
  
Kompetenzen	
  
techdev	
   Solutions	
   kann	
   Sie	
   bei	
   der	
   Einführung	
  
virtualisierter	
  Abläufe	
  unterstützen.	
  Als	
  Partner	
  der	
  
Deutsche	
   Börse	
   Cloud	
   Exchange	
   AG	
   sowie	
   durch	
  
den	
   Einsatz	
   von	
   Vagrant	
   und	
   Chef	
   für	
   die	
  
Entwicklung	
   der	
   eigenen	
   Softwarelösungen,	
  
verfügt	
   techdev	
   über	
   umfangreiche	
   Erfahrung	
   im	
  
Einsatz	
  von	
  Virtualisierung.	
  
Wir	
  helfen	
  Ihnen	
  gerne!	
  
	
  
Über	
  uns	
  
techdev	
   Solutions	
   ist	
   der	
   unabhängige	
  
Beratungspartner	
   für	
   anspruchsvolle	
   IT-­‐Projekte.	
  
Gemeinsam	
   mit	
   unseren	
   Kunden	
   konzipieren	
   wir	
  
individuell	
   abgestimmte	
   Softwarelösungen,	
   setzen	
  
Vagrant.configure(“2”)	
  do	
  |config|	
  
	
  	
  config.vm	
  =	
  “precise64”	
  
	
  	
  config.vm.box_url	
  =	
  “http://files.acme.inc/precise64.box”	
  
	
  	
  config.vm.provider	
  :virtualbox	
  do	
  |vb|	
  
	
  	
  	
  	
  vb.customize	
  [“modifyvm”,	
  :id,	
  “-­‐-­‐cpus”,	
  2]	
  
	
  	
  	
  	
  vb.customize	
  [“modifyvm”,	
  :id,	
  “-­‐-­‐memory”,	
  2048]	
  
	
  	
  end	
  
end	
  
execute	
  “apt-­‐get	
  update”	
  
package	
  “openjdk-­‐7-­‐jdk”	
  
Listing 2 - Installieren eines JDK aus den Paketquellen	
  
Listing 1 - Konfiguration einer Linux-basierten VM	
  
diese	
   um	
   und	
   entwickeln	
   bestehende	
   Systeme	
  
weiter.	
   In	
   Zeiten	
   von	
   komplexen	
   Arbeitsabläufen	
  
und	
  einer	
  hauptsächlich	
  von	
  Zeit-­‐	
  und	
  Kostendruck	
  
bestimmten	
   Wettbewerbsfähigkeit,	
   sind	
   optimale	
  
Prozesse	
   und	
   effiziente	
   IT-­‐Strukturen	
   oft	
   der	
  
entscheidende	
   Vorteil,	
   welcher	
   unseren	
   Kunden	
  
ihre	
  Favoritenrolle	
  sichert.	
  
Kontakt
techdev	
  Solutions	
  UG	
  (haftungsbeschränkt)	
  
Bismarckstr.	
  47	
  
76133	
  Karlsruhe	
  
	
  
info@techdev.de	
  
http://techdev.de	
  
	
  
Referenzen	
  
[1]	
  http://www.vagrantup.com/	
  
[2]	
  https://www.virtualbox.org/	
  
[3]	
  http://www.getchef.com/chef/	
  
[4]	
  http://puppetlabs.com/	
  

Contenu connexe

Tendances

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
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easyinovex GmbH
 
Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!Jan Dittberner
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
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
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migrationdehms
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBMinerva SoftCare GmbH
 
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
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Dockergedoplan
 
Continuous Integration mit Hudson
Continuous Integration mit HudsonContinuous Integration mit Hudson
Continuous Integration mit HudsonDr. Christian Betz
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15m1no
 
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
 
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay Dresden
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3Roman Hutterer
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 

Tendances (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?
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Jenkins Acceleration
Jenkins AccelerationJenkins Acceleration
Jenkins Acceleration
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
docker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easydocker.io - Secure And Portable Containers Made Easy
docker.io - Secure And Portable Containers Made Easy
 
Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!Continuous Delivery - Aber Sicher?!
Continuous Delivery - Aber Sicher?!
 
Was ist Docker ?
Was ist Docker ?Was ist Docker ?
Was ist Docker ?
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
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...
 
Gameduell Glassfish Migration
Gameduell Glassfish MigrationGameduell Glassfish Migration
Gameduell Glassfish Migration
 
Objektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWBObjektbasierte Versionierung und Lifecycle Management für den OWB
Objektbasierte Versionierung und Lifecycle Management für den OWB
 
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
 
Hendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit DockerHendrik Jungnitsch: Software verpacken mit Docker
Hendrik Jungnitsch: Software verpacken mit Docker
 
Continuous Integration mit Hudson
Continuous Integration mit HudsonContinuous Integration mit Hudson
Continuous Integration mit Hudson
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Docker Einführung @GPN15
Docker Einführung @GPN15Docker Einführung @GPN15
Docker Einführung @GPN15
 
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
 
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework XetaDevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
DevDay 2016: Peter Lehmann - Testautomatisierungsframework Xeta
 
Deploy Magento Shops with Capistrano v3
Deploy Magento Shops with Capistrano  v3Deploy Magento Shops with Capistrano  v3
Deploy Magento Shops with Capistrano v3
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 

Similaire à Vagrant

Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationGWAVA
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Bernd Zuther
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-Modellen
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-ModellenErfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-Modellen
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-ModellenFlexera
 
InstallShield 2013 Datasheet
InstallShield 2013 DatasheetInstallShield 2013 Datasheet
InstallShield 2013 DatasheetFlexera
 
InstallShield 2014- DE
InstallShield 2014- DEInstallShield 2014- DE
InstallShield 2014- DEFlexera
 
Middleware Basics für den DBA
Middleware Basics für den DBAMiddleware Basics für den DBA
Middleware Basics für den DBATrivadis
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
ApplicationPro Flyer deutsch
ApplicationPro Flyer deutschApplicationPro Flyer deutsch
ApplicationPro Flyer deutschcynapspro GmbH
 
Code-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-EntwicklungCode-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-Entwicklungbhoeck
 
cynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfadencynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfadencynapspro GmbH
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenJan Hentschel
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3Peter Kraume
 
InstallShield 2015-DE
InstallShield 2015-DEInstallShield 2015-DE
InstallShield 2015-DEFlexera
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsGünther Haslbeck
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3Ralf Eggert
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturQAware GmbH
 

Similaire à Vagrant (20)

Desktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application VirtualizationDesktop Containers 12: Next Generation of ZENworks Application Virtualization
Desktop Containers 12: Next Generation of ZENworks Application Virtualization
 
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
Java Aktuell Bernd Zuther Canary Releases mit der Very Awesome Microservices ...
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-Modellen
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-ModellenErfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-Modellen
Erfolgreiches Lizenzmanagement in Virtual-Desktop-Umgebungen und BYOD-Modellen
 
InstallShield 2013 Datasheet
InstallShield 2013 DatasheetInstallShield 2013 Datasheet
InstallShield 2013 Datasheet
 
InstallShield 2014- DE
InstallShield 2014- DEInstallShield 2014- DE
InstallShield 2014- DE
 
Middleware Basics für den DBA
Middleware Basics für den DBAMiddleware Basics für den DBA
Middleware Basics für den DBA
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
ApplicationPro Flyer deutsch
ApplicationPro Flyer deutschApplicationPro Flyer deutsch
ApplicationPro Flyer deutsch
 
Code-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-EntwicklungCode-Generierung vereinfacht IoT-Entwicklung
Code-Generierung vereinfacht IoT-Entwicklung
 
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetproTest-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
Test-Automation mit Selenium WebDriver - ein Artikel der iks im dotnetpro
 
cynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfadencynapspro data endpoint protection 2010 - Installationsleitfaden
cynapspro data endpoint protection 2010 - Installationsleitfaden
 
Openshift
OpenshiftOpenshift
Openshift
 
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreibenSQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
SQL Server auf Infrastructure-as-a-Services (IaaS) in der Cloud betreiben
 
Composer und TYPO3
Composer und TYPO3Composer und TYPO3
Composer und TYPO3
 
InstallShield 2015-DE
InstallShield 2015-DEInstallShield 2015-DE
InstallShield 2015-DE
 
Ueberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web ApplicationsUeberlegungen Projektmanagement Web Applications
Ueberlegungen Projektmanagement Web Applications
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer InfrastrukturContinuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
Continuous Delivery für Cloud-native Anwendungen auf Cloud-nativer Infrastruktur
 
Elsholz stoll js_03_10
Elsholz stoll js_03_10Elsholz stoll js_03_10
Elsholz stoll js_03_10
 

Vagrant

  • 1.   Problemstellung   Ein   häufiges   Problem   beim   Integrieren   neuer   Entwickler   in   bestehende   Software-­‐ Entwicklungsprojekte   stellt   das   initiale   Aufsetzen   der  benötigten  Tools  und  Technologien  dar,  die  für   das  Ausführen  der  Anwendung  nötig  ist.  Während   Quellcode   und   Dokumentation   in   der   Regel   an   einem   zentralen   Ort   für   alle   frei   zugänglich   sind,   trifft  dies  bei  ganzen  Umgebungen  eher  selten  zu.   Um   ihre   Anwendung   regelmäßig   lokal   zu   testen,   sind  die  Entwickler  beim  Aufsetzen  der  Umgebung   meist   auf   sich   allein   gestellt.   In   einer   typischen   Webanwendung   sind   die   eingesetzten   Applikationsserver   und   Datenbanken   den   Entwicklern   zwar   bekannt,   doch   nicht   zwingend   auch   die   eingesetzten   Versionen.   Eben   diese   Unschärfe  führt  dazu,  dass  bei  einem  Entwickler  die   Anwendung   fehlerfrei   läuft,   bei   einem   anderen   jedoch  nicht.  Dies  resultiert  in  unnötigem  Aufwand   für   sowohl   das   initiale   Aufsetzen,   als   auch   das   Finden  von  Fehlern.   Lösung   Um  neuen  Entwicklern  den  Einstieg  zu  vereinfachen   und   die   Fehlerquellen   zu   reduzieren,   ist   es   naheliegend   neben   dem   Quellcode   und   der   Dokumentation   auch   die   vollständige   Umgebung   zentral   bereitzustellen.   In   dieser   sind   alle   Komponenten   bereits   enthalten,   wodurch   jede   Umgebung   vollständig   identisch   zu   jeder   anderen   ist  -­‐  im  Idealfall  sogar  zur  Produktionsumgebung.   Mittels   Virtualisierung   lässt   sich   eben   dies   erreichen.   Ein   zentrales   Repository   verwaltet   die   Konfiguration   der   Umgebung   (die   sogenannte   Appliance),   mittels   derer   virtuelle   Maschinen   provisioniert   und   fertig   konfiguriert   werden   können.     Implementierung   Zur   Implementierung   dieser   Lösung   bietet   sich   Vagrant  [1]  an.  Vagrant  ist  ein  Tool  spezialisiert  auf   das   Erstellen   und   Konfigurieren   von   virtuellen   Maschinen.   Dabei   instanziiert   Vagrant   die   Virtualisierung   ermöglicht   es   auf   einer   bestehenden   Plattform,   dem   sogenannten   Hostsystem,   virtuelle   Hardware   bereitzustellen.   So   können   auf   ein   und   derselben   Hardware   mehrere   virtuelle   Maschinen   (VMs)   parallel  laufen,  die  dennoch  vollständig  voneinander  isoliert  sind.  Nicht  zuletzt  ist  es  genau  diese  Technologie,  die   das  Cloud  Computing  ermöglicht  hat.  In  großen  Datenzentren  werden  VMs  provisioniert  und  den  Kunden  zur   Verfügung  gestellt,  die  diese  dann  individuell  anpassen  können.   Virtualisierte  Umgebungen  mit  Vagrant  
  • 2. Maschinen   nicht   selbst,   sondern   delegiert   diese   Aufgabe   an   sog.   Provisioner   wie   bspw.   Oracle   VirtualBox   [2].   Eine   zentrale   Konfigurationsdatei   (das  Vagrantfile)  ist  ausreichend  um  mittels  Vagrant   die  VM  erstellen  zu  lassen:       Die  Appliance  oder  auch  Box  zum  Bau  der  virtuellen   Maschine   kann   direkt   von   einem   Webserver   bezogen  werden.  Mittels  des  Vagrantfiles  kann  die   virtuelle  Maschine  nun  beliebig  angepasst  werden,   bspw.   um   die   verfügbare   virtuelle   Hardware   zu   ändern  oder  das  Netzwerk  zu  konfigurieren.  Mittels   hinterlegter   Skripte   oder   Tools   wie   Chef   [3]   oder   Puppet   [4]   (sog.   Provisioner)   lassen   sich   die   virtuellen   Maschinen   bis   ins   Detail   anpassen.   So   können   Pakte   installiert,   Server   konfiguriert   oder   neue  Nutzer  angelegt  werden:                 Somit   benötigen   Entwickler   nicht   mehr   als   die   Konfigurationsdatei   und   eine   Installation   von   Vagrant.   Ein   einfaches   vagrant  up   ist   ausreichend   um   die   Maschine   erstellen,   konfigurieren   und   starten   zu   lassen.   Auf   diese   kann   nun   mittels   SSH   direkt   zugegriffen   werden.   Ebenfalls   lassen   sich   lokale  Ordner  in  die  virtuelle  Maschine  spiegeln.  So   werden  Updates  auf  den  lokalen  Dateien  sofort  in   der  virtuellen  Umgebung  sichtbar.     Vorteile   Der   Einsatz   von   Virtualisierung   im   beschriebenen   Szenario   erlaubt   es   Entwicklern   viel   schneller   produktiv  zu  sein.  Der  Aufwand  zum  Aufsetzen  der   Umgebung   fällt   nun   nur   noch   beim   Erstellen   der   Konfiguration   einmalig   an.   Im   Falle   von   Updates   kann   die   virtuelle   Maschine   einfach   gestoppt   und   mit  der  neuen  Konfiguration  neu  gestartet  werden.   Genau   diese   Tatsache   macht   das   Experimentieren   mit  neuen  Versionen  viel  weniger  riskant.  So  kann   einfach   eine   neue   Komponente   in   der   virtuellen   Maschine   installiert   und   getestet   werden.   Führt   dies   zu   Fehlern,   wird   die   bestehende   VM   einfach   verworfen  und  eine  neue  gestartet.  Dies  dauert  in   der   Regel   nicht   länger   als   fünf   Minuten.   Das   Phänomen,   dass   Anwendungen   bei   einem   Entwickler   lokal   fehlerfrei   laufen,   bei   einem   anderen   jedoch   nicht,   lässt   sich   hinsichtlich   der   Umgebung   nun   auch   ausschließen.   Die   virtuellen   Maschinen   können   lokal   ausgeführt   werden   –   sie   können   aber   ebenso   auf   dedizierte   Hardware   der   jeweiligen   Firma   oder   sogar   in   der   Cloud   provisioniert  werden.  Somit  skaliert  dieser  Ansatz  je   nach   Größe   und   Bedarf   des   jeweiligen   Unternehmens.     Konsequenzen   Jedoch  gibt  es  auch  bei  diesem  Ansatz  Punkte,  die   zu   bedenken   sind.   So   muss   die   entsprechende   Infrastruktur   initial   aufgebaut   werden,   und   die   Appliances   müssen   konfiguriert   werden.   Auch   Vagrant   selbst   wird   stetig   weiterentwickelt,   wodurch   es   zu   verschiedenen   Versionen   kommt.   Wohingegen   sich   der   beschriebene   Workflow   bei   neuen  Projekten  sehr  gut  einsetzen  lässt,  bedarf  es   mehr  Aufwand  beim  Ändern  bestehender  Abläufe.   Das   Versionsproblem   von   Vagrant   selbst   wird   dadurch   adressiert,   dass   die   Konfiguration   unabhängig  von  der  jeweiligen  Version  ist,  und  auch   der   initiale   Aufwand   lässt   sich   mit   den   zu   erwartenden   Einsparungen   für   das   Aufsetzen   der   Umgebungen   und   Beheben   von   Fehlern   rechtfertigen.     Kompetenzen   techdev   Solutions   kann   Sie   bei   der   Einführung   virtualisierter  Abläufe  unterstützen.  Als  Partner  der   Deutsche   Börse   Cloud   Exchange   AG   sowie   durch   den   Einsatz   von   Vagrant   und   Chef   für   die   Entwicklung   der   eigenen   Softwarelösungen,   verfügt   techdev   über   umfangreiche   Erfahrung   im   Einsatz  von  Virtualisierung.   Wir  helfen  Ihnen  gerne!     Über  uns   techdev   Solutions   ist   der   unabhängige   Beratungspartner   für   anspruchsvolle   IT-­‐Projekte.   Gemeinsam   mit   unseren   Kunden   konzipieren   wir   individuell   abgestimmte   Softwarelösungen,   setzen   Vagrant.configure(“2”)  do  |config|      config.vm  =  “precise64”      config.vm.box_url  =  “http://files.acme.inc/precise64.box”      config.vm.provider  :virtualbox  do  |vb|          vb.customize  [“modifyvm”,  :id,  “-­‐-­‐cpus”,  2]          vb.customize  [“modifyvm”,  :id,  “-­‐-­‐memory”,  2048]      end   end   execute  “apt-­‐get  update”   package  “openjdk-­‐7-­‐jdk”   Listing 2 - Installieren eines JDK aus den Paketquellen   Listing 1 - Konfiguration einer Linux-basierten VM  
  • 3. diese   um   und   entwickeln   bestehende   Systeme   weiter.   In   Zeiten   von   komplexen   Arbeitsabläufen   und  einer  hauptsächlich  von  Zeit-­‐  und  Kostendruck   bestimmten   Wettbewerbsfähigkeit,   sind   optimale   Prozesse   und   effiziente   IT-­‐Strukturen   oft   der   entscheidende   Vorteil,   welcher   unseren   Kunden   ihre  Favoritenrolle  sichert.   Kontakt techdev  Solutions  UG  (haftungsbeschränkt)   Bismarckstr.  47   76133  Karlsruhe     info@techdev.de   http://techdev.de     Referenzen   [1]  http://www.vagrantup.com/   [2]  https://www.virtualbox.org/   [3]  http://www.getchef.com/chef/   [4]  http://puppetlabs.com/