SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
© Zühlke 2017
Automatisierte Entwickler VMs
„works on my machine“ zählt nicht mehr ;-)
Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 1
© Zühlke 2017
About
§ Seit 10 Jahren bei Zühlke
§ Software Architekt und Infrastructure-as-Code Enthusiast
§ In verschiedensten Projekten unterwegs...
§ ...und immer wieder:
“works on my machine“
§ Let‘s fix this! J
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 2
github/tknerr
@tknerr_de
© Zühlke 2017
Das Problem mit “works on my machine“...
§ „Das nervt. Seit zwei Wochen auf dem Projekt und noch nichts kompiliert bei mir“
§ „Warum nutzt eigentlich jeder hier eine andere Java / Maven / Eclipse Version?“
§ „Aha, mit der Eclipse Installation von Peter, dem Plugins Verzeichnis von Manuela, und
den Einstellungen von Kurt funktioniert es also. Und so machen es alle?!?“
§ „Also Kurt hat bei sich noch ein paar Umgebungsvariablen angepasst. Den Trick mit den
Registry Einstellungen kennst du auch, oder?“
§ „Euer Buildserver läuft wirklich auf nem ganz anderen Betriebssystem?!?“
§ „Warum ist die Doku zum Aufsetzen der Entwicklungsumgebung eigentlich IMMER
veraltet?“
Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 3
© Zühlke 2017
Eine mögliche Lösung: Automatisierte Entwickler VMs
VMs bieten eine konsistente, isolierte und reproduzierbare
Umgebung
Warum Automatisieren?
§ Schlanker Source Code generiert fette VM Images
§ Bessere Reproduzierbarkeit und geringere Fehleranfälligkeit
§ Alles unter Versionskontrolle: Historie, Diffs, Pull Requests, usw...
§ Mit Configuration Management Tools (Chef, Ansible, etc):
Deklarative Spezifikation des Zielzustands statt imperativer Skripte
Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 4
© Zühlke 2017
Mein Ziel für heute
§ Grundlegendes Verständnis für die Automatisierung von Entwickler VMs schaffen
§ Gerade genug Chef + Vagrant Einführung, um die Zusammenhänge zu verstehen
§ Direkt nutzbare Vorlagen für einen „Kickstart“ mitgeben
Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 5
© Zühlke 2017
Automatisierte Entwickler VMs
Anforderungen und kurze Vorstellung der Toolchain
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 6
VM Erstellen
VM
Provisionieren
VM Testen
VM
Exportieren
© Zühlke 2017
Anforderungen an eine Automatisierte Entwickler VM
Diese Eigenschaften sollte eine Entwickler VM erfüllen:
§ Aktualisierbarkeit – die VM soll sich selbst aktualisieren können
§ Testbarkeit – die Funktionstüchtigkeit der VM soll stets abgesichert sein
§ Installierbarkeit – die VM soll als Standard .ova Image verteilt werden
§ Anpassbarkeit – die VM soll von den Entwicklern einfach anpassbar sein
§ Nachvollziehbarkeit – Änderungen an der VM sollen transparent sein
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 7
© Zühlke 2017
Eine Toolchain zum Automatisieren von Entwickler VMs
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 8
(die Tools werden anschließend in einer Demo kurz vorgestellt)
VM Erstellen
VM
Provisionieren
VM Testen
VM
Exportieren
© Zühlke 2017
Was ist Vagrant?
§ Ein Vagrantfile beschreibt die VMs
§ Einfache Befehle um mit den VMs zu interagieren:
§ vagrant up
§ vagrant provision
§ vagrant ssh
§ vagrant destroy
§ …
§ Mehrere Provider: VirtualBox, VMWare, Docker, AWS, usw..
§ Dazu verschiedene Provisioner: Shell, Chef, Ansible, usw..
https://www.vagrantup.com/docs
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 9
…ein Tool um VMs automatisiert zu erstellen und zu provisionieren
© Zühlke 2017
Was ist Chef?
§ Ein Cookbook ist eine wiederverwendbare Einheit
§ Darin enthalten sind Recipes, Templates, Libraries, etc..
§ In einem Recipe werden Resourcen beschrieben:
§ file
§ service
§ package
§ user
§ ...
§ Der chef-client „konvergiert“ das System in den
spezifizierten Zustand
https://learn.chef.io/tutorials/
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 10
…ein Configuration Management Tool um die VMs zu konfigurieren
© Zühlke 2017
Was ist Serverspec?
§ Basierend auf RSpec (Rubyisten kennen das J)
§ Stellt Matcher für typische System Ressourcen bereit:
§ file
§ package
§ service
§ user
§ ...
§ Unterstützt verschiedene Backends (z.B. local, SSH, WinRM)..
§ ..und Betriebssysteme (diverse Linux Distributionen, Windows)
http://serverspec.org/
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 11
…ein Framework um die VMs automatisiert zu testen
© Zühlke 2017
Beispiel: Java Entwickler VM
Eine minimale Entwickler VM mit Java, Maven und Eclipse
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 12
© Zühlke 2017
Template Projekt für Entwickler VMs (mit dieser Toolchain)
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 13
https://github.com/Zuehlke/linux-developer-vm
© Zühlke 2017
Szenario: Java Entwickler VM
Minimal sollten diese Tools enthalten sein:
§ Java
§ Maven
§ Eclipse
Schritte:
1. Template Projekt klonen und VM starten
2. Chef Rezepte für die Installation / Konfiguration o.g. Tools erstellen
3. Mit Serverspec Tests absichern
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 14
Wie erstellen wir eine Java Entwickler VM?
© Zühlke 2017
Szenario: Java Entwickler VM
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 15
https://github.com/tknerr/etka2017-developer-vm/pull/1
© Zühlke 2017
Szenario: Java Entwickler VM
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 16
https://github.com/tknerr/etka2017-developer-vm/pull/2
© Zühlke 2017
Szenario: Java Entwickler VM
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 17
https://github.com/tknerr/etka2017-developer-vm/pull/3
© Zühlke 2017
Szenario: Java Entwickler VM
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 18
https://github.com/tknerr/etka2017-developer-vm/pull/5
© Zühlke 2017
Zusammengefasst…
§ Keine Angst vor der Toolchain
§ Infrastructure-as-Code ist kodifiziertes Wissen
§ Deklarative Spezifikation des Zielzustands vs imperativer Skripte
§ Automatisiertes Testen von Infrastruktur ist gar nicht schwer
§ Vorlagen als “Kickstart” nutzen und anpassen!
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 19
© Zühlke 2017
Entwickler VMs funktionieren super…
§ Bei großen sowie kleinen Teams
§ Bei häufigem Wechsel zwischen Projekten / Toolchains
§ Beim Ramp-up neuer Team Mitglieder
§ Im regulierten Umfeld (Validierung)
§ Auch als Windows VMs
§ In Kombination mit Automatisierter CI Infrastruktur
…und helfen bei “works on my machine”
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 20
© Zühlke 2017
Links und Ressourcen
Linux Developer VM Template:
https://github.com/Zuehlke/linux-developer-vm
Ein paar Beispiele für darauf basierende Entwickler VMs:
https://github.com/Zuehlke/java-developer-vm
https://github.com/tknerr/linus-kitchen
Demo Repository zu diesem Vortrag:
https://github.com/tknerr/etka2017-demo-repo
More Open Source @Zuehlke:
https://zuehlke.github.io/
22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 21
Zum Wiederverwenden und Anpassen…
© Zühlke 201722. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 22
Vielen Dank! J
Und lassen Sie uns gerne hier weiter diskutieren:

Más contenido relacionado

La actualidad más candente

Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Matthias Fauter
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScriptManfred Steyer
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundigeabuwipp
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: SecurityMayflower GmbH
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickPhilipp Burgmer
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsChristian Erhardt
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneVorname Nachname
 
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...André Krämer
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapStephan Kaps
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
DACH - Continuous delivery for Puppet Enterprise 08/09/2018DACH - Continuous delivery for Puppet Enterprise 08/09/2018
DACH - Continuous delivery for Puppet Enterprise 08/09/2018Puppet
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineggedoplan
 
Lohnt sich die Modernisierung bestehnder Software
Lohnt sich die Modernisierung bestehnder SoftwareLohnt sich die Modernisierung bestehnder Software
Lohnt sich die Modernisierung bestehnder SoftwareChristian Güdemann
 

La actualidad más candente (18)

Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
Source2Image - Vom Code zum fertigen Image mit einer Build-Chain basierend au...
 
Apex meets Docker
Apex meets DockerApex meets Docker
Apex meets Docker
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript
 
Continuous integration eine Einführung für Unkundige
Continuous integration   eine Einführung für UnkundigeContinuous integration   eine Einführung für Unkundige
Continuous integration eine Einführung für Unkundige
 
Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014Roslyn DDC Kompakt 2014
Roslyn DDC Kompakt 2014
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und AusblickTaugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
Taugt AngularJS wirklich was? Erfahrungsbericht und Ausblick
 
Das Kung Fu des Code Reviews
Das Kung Fu des Code ReviewsDas Kung Fu des Code Reviews
Das Kung Fu des Code Reviews
 
DevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der SchieneDevOps - Mehr Geschwindigkeit auf der Schiene
DevOps - Mehr Geschwindigkeit auf der Schiene
 
Version management mit Git und Github
Version management mit Git und Github Version management mit Git und Github
Version management mit Git und Github
 
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
Entwicklung von ASP.NET-Core- und SQL-Server-Anwendungen unter macOS in der P...
 
Kaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment RoadmapKaps - Continuous Deployment Roadmap
Kaps - Continuous Deployment Roadmap
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
DACH - Continuous delivery for Puppet Enterprise 08/09/2018DACH - Continuous delivery for Puppet Enterprise 08/09/2018
DACH - Continuous delivery for Puppet Enterprise 08/09/2018
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Lohnt sich die Modernisierung bestehnder Software
Lohnt sich die Modernisierung bestehnder SoftwareLohnt sich die Modernisierung bestehnder Software
Lohnt sich die Modernisierung bestehnder Software
 
TDD für Testmuffel
TDD für TestmuffelTDD für Testmuffel
TDD für Testmuffel
 
3. Night of the pack
3. Night of the pack3. Night of the pack
3. Night of the pack
 

Similar a Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
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
 
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
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersUlrich Krause
 
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
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeDevOps Meetup Bern
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen....NET User Group Rhein-Neckar
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsThorsten Kamann
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftBart Zwager
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenOPITZ CONSULTING Deutschland
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkinsinovex GmbH
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?POINT. Consulting GmbH
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessRalf Abramowitsch
 
ConventionCamp Hannover
ConventionCamp HannoverConventionCamp Hannover
ConventionCamp Hannoverglembotzky
 
Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhereberndmueller
 
Microsoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindMicrosoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindChristian Heilmann
 

Similar a Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-) (20)

Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und 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 Virtualization
 
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
 
C/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino DevelopersC/ C++ for Notes & Domino Developers
C/ C++ for Notes & Domino Developers
 
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?
 
XPages - The Basics
XPages - The BasicsXPages - The Basics
XPages - The Basics
 
Config as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as CodeConfig as Code: Der Weg zu Configuration as Code
Config as Code: Der Weg zu Configuration as Code
 
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
30. Treffen der .NET User Group Rhein-Neckar mit Constantin Klein - „Bekommen...
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Vortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development EnvironmentsVortragsreihe Dortmund: Unified Development Environments
Vortragsreihe Dortmund: Unified Development Environments
 
Dev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei TechnosoftDev ops testautomatisierer bei Technosoft
Dev ops testautomatisierer bei Technosoft
 
Vagrant
VagrantVagrant
Vagrant
 
Vagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und ArchitektenVagrant, Puppet, Docker für Entwickler und Architekten
Vagrant, Puppet, Docker für Entwickler und Architekten
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?ASP.NET Core – Troublemaker oder Problemsolver?
ASP.NET Core – Troublemaker oder Problemsolver?
 
Build Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build ProzessBuild Patterns - Patterns und Best Practices für den Build Prozess
Build Patterns - Patterns und Best Practices für den Build Prozess
 
ConventionCamp Hannover
ConventionCamp HannoverConventionCamp Hannover
ConventionCamp Hannover
 
Compilers Everywhere
Compilers EverywhereCompilers Everywhere
Compilers Everywhere
 
Microsoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindMicrosoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behind
 

Más de Torben Knerr

Monitoring in Azure
Monitoring in AzureMonitoring in Azure
Monitoring in AzureTorben Knerr
 
Kollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätKollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätTorben Knerr
 
Cooking with Chef, Knife, Vagrant and Co
Cooking with Chef, Knife, Vagrant and CoCooking with Chef, Knife, Vagrant and Co
Cooking with Chef, Knife, Vagrant and CoTorben Knerr
 
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Torben Knerr
 
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoInfrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoTorben Knerr
 
ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?Torben Knerr
 

Más de Torben Knerr (7)

Monitoring in Azure
Monitoring in AzureMonitoring in Azure
Monitoring in Azure
 
Kollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und RealitätKollaboration in Java Projekten - Anspruch und Realität
Kollaboration in Java Projekten - Anspruch und Realität
 
Cooking with Chef, Knife, Vagrant and Co
Cooking with Chef, Knife, Vagrant and CoCooking with Chef, Knife, Vagrant and Co
Cooking with Chef, Knife, Vagrant and Co
 
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vag...
 
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & CoInfrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
Infrastructure-As-Code and Cloud Deployments with Opscode Chef & Co
 
ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?ALM und dezentrales SCM – Die Quadratur des Kreises?
ALM und dezentrales SCM – Die Quadratur des Kreises?
 
Maven Intro
Maven IntroMaven Intro
Maven Intro
 

Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)

  • 1. © Zühlke 2017 Automatisierte Entwickler VMs „works on my machine“ zählt nicht mehr ;-) Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 1
  • 2. © Zühlke 2017 About § Seit 10 Jahren bei Zühlke § Software Architekt und Infrastructure-as-Code Enthusiast § In verschiedensten Projekten unterwegs... § ...und immer wieder: “works on my machine“ § Let‘s fix this! J 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 2 github/tknerr @tknerr_de
  • 3. © Zühlke 2017 Das Problem mit “works on my machine“... § „Das nervt. Seit zwei Wochen auf dem Projekt und noch nichts kompiliert bei mir“ § „Warum nutzt eigentlich jeder hier eine andere Java / Maven / Eclipse Version?“ § „Aha, mit der Eclipse Installation von Peter, dem Plugins Verzeichnis von Manuela, und den Einstellungen von Kurt funktioniert es also. Und so machen es alle?!?“ § „Also Kurt hat bei sich noch ein paar Umgebungsvariablen angepasst. Den Trick mit den Registry Einstellungen kennst du auch, oder?“ § „Euer Buildserver läuft wirklich auf nem ganz anderen Betriebssystem?!?“ § „Warum ist die Doku zum Aufsetzen der Entwicklungsumgebung eigentlich IMMER veraltet?“ Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 3
  • 4. © Zühlke 2017 Eine mögliche Lösung: Automatisierte Entwickler VMs VMs bieten eine konsistente, isolierte und reproduzierbare Umgebung Warum Automatisieren? § Schlanker Source Code generiert fette VM Images § Bessere Reproduzierbarkeit und geringere Fehleranfälligkeit § Alles unter Versionskontrolle: Historie, Diffs, Pull Requests, usw... § Mit Configuration Management Tools (Chef, Ansible, etc): Deklarative Spezifikation des Zielzustands statt imperativer Skripte Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 4
  • 5. © Zühlke 2017 Mein Ziel für heute § Grundlegendes Verständnis für die Automatisierung von Entwickler VMs schaffen § Gerade genug Chef + Vagrant Einführung, um die Zusammenhänge zu verstehen § Direkt nutzbare Vorlagen für einen „Kickstart“ mitgeben Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr 22. Mai 2017 Folie 5
  • 6. © Zühlke 2017 Automatisierte Entwickler VMs Anforderungen und kurze Vorstellung der Toolchain 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 6 VM Erstellen VM Provisionieren VM Testen VM Exportieren
  • 7. © Zühlke 2017 Anforderungen an eine Automatisierte Entwickler VM Diese Eigenschaften sollte eine Entwickler VM erfüllen: § Aktualisierbarkeit – die VM soll sich selbst aktualisieren können § Testbarkeit – die Funktionstüchtigkeit der VM soll stets abgesichert sein § Installierbarkeit – die VM soll als Standard .ova Image verteilt werden § Anpassbarkeit – die VM soll von den Entwicklern einfach anpassbar sein § Nachvollziehbarkeit – Änderungen an der VM sollen transparent sein 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 7
  • 8. © Zühlke 2017 Eine Toolchain zum Automatisieren von Entwickler VMs 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 8 (die Tools werden anschließend in einer Demo kurz vorgestellt) VM Erstellen VM Provisionieren VM Testen VM Exportieren
  • 9. © Zühlke 2017 Was ist Vagrant? § Ein Vagrantfile beschreibt die VMs § Einfache Befehle um mit den VMs zu interagieren: § vagrant up § vagrant provision § vagrant ssh § vagrant destroy § … § Mehrere Provider: VirtualBox, VMWare, Docker, AWS, usw.. § Dazu verschiedene Provisioner: Shell, Chef, Ansible, usw.. https://www.vagrantup.com/docs 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 9 …ein Tool um VMs automatisiert zu erstellen und zu provisionieren
  • 10. © Zühlke 2017 Was ist Chef? § Ein Cookbook ist eine wiederverwendbare Einheit § Darin enthalten sind Recipes, Templates, Libraries, etc.. § In einem Recipe werden Resourcen beschrieben: § file § service § package § user § ... § Der chef-client „konvergiert“ das System in den spezifizierten Zustand https://learn.chef.io/tutorials/ 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 10 …ein Configuration Management Tool um die VMs zu konfigurieren
  • 11. © Zühlke 2017 Was ist Serverspec? § Basierend auf RSpec (Rubyisten kennen das J) § Stellt Matcher für typische System Ressourcen bereit: § file § package § service § user § ... § Unterstützt verschiedene Backends (z.B. local, SSH, WinRM).. § ..und Betriebssysteme (diverse Linux Distributionen, Windows) http://serverspec.org/ 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 11 …ein Framework um die VMs automatisiert zu testen
  • 12. © Zühlke 2017 Beispiel: Java Entwickler VM Eine minimale Entwickler VM mit Java, Maven und Eclipse 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 12
  • 13. © Zühlke 2017 Template Projekt für Entwickler VMs (mit dieser Toolchain) 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 13 https://github.com/Zuehlke/linux-developer-vm
  • 14. © Zühlke 2017 Szenario: Java Entwickler VM Minimal sollten diese Tools enthalten sein: § Java § Maven § Eclipse Schritte: 1. Template Projekt klonen und VM starten 2. Chef Rezepte für die Installation / Konfiguration o.g. Tools erstellen 3. Mit Serverspec Tests absichern 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 14 Wie erstellen wir eine Java Entwickler VM?
  • 15. © Zühlke 2017 Szenario: Java Entwickler VM 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 15 https://github.com/tknerr/etka2017-developer-vm/pull/1
  • 16. © Zühlke 2017 Szenario: Java Entwickler VM 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 16 https://github.com/tknerr/etka2017-developer-vm/pull/2
  • 17. © Zühlke 2017 Szenario: Java Entwickler VM 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 17 https://github.com/tknerr/etka2017-developer-vm/pull/3
  • 18. © Zühlke 2017 Szenario: Java Entwickler VM 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 18 https://github.com/tknerr/etka2017-developer-vm/pull/5
  • 19. © Zühlke 2017 Zusammengefasst… § Keine Angst vor der Toolchain § Infrastructure-as-Code ist kodifiziertes Wissen § Deklarative Spezifikation des Zielzustands vs imperativer Skripte § Automatisiertes Testen von Infrastruktur ist gar nicht schwer § Vorlagen als “Kickstart” nutzen und anpassen! 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 19
  • 20. © Zühlke 2017 Entwickler VMs funktionieren super… § Bei großen sowie kleinen Teams § Bei häufigem Wechsel zwischen Projekten / Toolchains § Beim Ramp-up neuer Team Mitglieder § Im regulierten Umfeld (Validierung) § Auch als Windows VMs § In Kombination mit Automatisierter CI Infrastruktur …und helfen bei “works on my machine” 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 20
  • 21. © Zühlke 2017 Links und Ressourcen Linux Developer VM Template: https://github.com/Zuehlke/linux-developer-vm Ein paar Beispiele für darauf basierende Entwickler VMs: https://github.com/Zuehlke/java-developer-vm https://github.com/tknerr/linus-kitchen Demo Repository zu diesem Vortrag: https://github.com/tknerr/etka2017-demo-repo More Open Source @Zuehlke: https://zuehlke.github.io/ 22. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 21 Zum Wiederverwenden und Anpassen…
  • 22. © Zühlke 201722. Mai 2017Automatisierte Entwickler VMs – „works on my machine“ zählt nicht mehr ;-) | Torben Knerr Folie 22 Vielen Dank! J Und lassen Sie uns gerne hier weiter diskutieren: