Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

0 views

Published on

Slides zu meinem Vortrag für die Karlsruher Entwickler Tage 2017:
https://entwicklertag.de/karlsruhe/2017/automatisierte-entwickler

Demo Repositories:
https://github.com/tknerr/etka2017-demo-repo
https://github.com/tknerr/etka2017-developer-vm

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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:

×