Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagrant und Puppet

644 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
644
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
9
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Continuous Delivery - Development Tool Chain - Virtualisierung, Packer, Vagrant und Puppet

  1. 1. IT Engineering – Continuous Delivery Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet Alexander Pacnik Karlsruhe, 20.05.2014
  2. 2. 2 Ziele ‣  Continuous Delivery – einfache, atomare Änderungen sollten immer möglich sein Voraussetzung ‣  Dev/Prod Parity – Werkzeuge und Prozesse der Umgebungen identisch halten ‣  Vollständige Automatisierung der Prozesse und Tests ‣  Infrastructure as Code Einleitung ... worum es in diesem Vortrag geht
  3. 3. 3 Problemstellung ‣  Entwicklungsumgebung für Operations zur Verfügung stellen ‣  Entwicklungsumgebung für Development zur Verfügung stellen ‣  Ein (!) Tool pro Aufgabe festlegen – heute Image Verwaltung mit Packer ‣  Entscheidungskriterien : Wer nutzt es? Wie wird es verwendet? ‣  Teil der DoD und für alle Beteiligten verbindlich Einleitung ... worum es in diesem Vortrag geht
  4. 4. Virtualisierung 4 Virtualisierung ... die Basis für unsere Boxen Development Environments (Vagrant) Image Creation (Packer) Hands-on Code
  5. 5. 5 VirtualBox ‣  Virtualisierungslösung die auf OSX, Linux und Windows funktioniert ‣  Vorteil: nur ein Host Betriebssystem das berücksichtigt / getestet werden muss ‣  Console: VBoxManage ‣  Installation: Installer Quellen ‣  VirtualBox: https://www.virtualbox.org Virtualisierung ... mit VirtualBox
  6. 6. 6 VMware Fusion ‣  Virtualisierungslösung für OSX ‣  Vorteil: Bessere Integration in die VMware Welt ‣  Console: vmrun (steuern) und ovftool (konvertieren) ‣  Installation: Installer Quellen ‣  VMware Fusion: http://www.vmware.com/de/products/fusion ‣  VMware Tools Versionen: http://packages.vmware.com/tools/versions ‣  OVF Tool: https://www.vmware.com/support/developer/ovf/ Virtualisierung ... mit VMware Fusion
  7. 7. Virtualisierung (VirtualBox) 7 Image Bauen ... mit Packer Development Environments (Vagrant) Image Creation (Packer) Hands-on Code
  8. 8. http://www.packer.io/intro/index.html 8 Was ist Packer? ‣  Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Image Bauen ... eine Einführung
  9. 9. http://www.packer.io/intro/index.html 9 Installation ‣  Archiv herunterladen und auspacken ‣  Binaries in den PATH aufnehmen Image Bauen ... einfache Installation
  10. 10. http://www.packer.io/docs/basics/terminology.html 10 Terminologie ‣  Artifacts – das Ergebnis eines Builds (Image) ‣  Templates – JSON Datei die die ganze Konfiguration enthält ‣  Builders – Konfiguration für eine bestimmte Plattform (Virtualbox, AWS, ...) ‣  Post-processors – Schritte nach einem Build (Artefakte hochladen / komprimieren) ‣  Provisioners - installieren Software in die laufende VM (Shell, Puppet, Chef, ...) ‣  Kickstart / Preseeding – Konfigurationsdatei für die OS Installation Image Bauen ... die wichtigsten Begriffe
  11. 11. http://www.packer.io/docs/templates/configuration-templates.html 11 Templates ‣  Alles zwischen { ... } in der JSON Datei ‣  {{.VAR}} Variablen beginnen mit einem Punkt und werden groß geschrieben ‣  {{timestamp}} build-in Funktionen werden klein geschrieben Image Bauen ... Templates schreiben
  12. 12. http://www.packer.io/docs/templates/configuration-templates.html 12 Variablen in Templates ‣  Werden in einen "variables": { ... } eingeschlossen, Definition: “key“: “value“ ‣  Value = ““ entspricht einer Variable die optional übergeben werden kann ‣  Value = null führ zu einem Validate-Fehler wenn die nicht gesetzt wird ‣  Im Template werden sie wie folgt verwendet: "{{user `key`}}“ ‣  Umgebungsvariablen können auch ausgelesen werden: "{{env `LANG`}} ‣  Variablen können über die CMD übergeben oder aus einer Datei ausgelesen werden ‣  Beispiel: Image Bauen ... Templates schreiben
  13. 13. 13 Provisioners ‣  Starten Skripte (Shell, Puppet, ...) in der laufenden VM ‣  Können auf Builds eingeschränkt werden (nur für Vagrant ausführen, etc) ‣  Können für einzelne Builds überschrieben werden um Unterschiede abzubilden Image Bauen ... Provisioners
  14. 14. 14 Debugging ‣  Viele Builder unterstützen "headless": "false“ ‣  Am Ende der Skripte ein Sleep einbauen und SSH in die Maschine ‣  Umgebungsvariable PACKER_LOG auf irgendeinen Wert setzen Image Bauen ... Debugging wenn Fehler auftreten
  15. 15. 15 Beispiel: Image Bauen ... Debugging wenn Fehler auftreten
  16. 16. Virtualisierung (VirtualBox) 16 Development Environments ... das Image einfach nutzbar machen Development Environments (Vagrant) Image Creation (Packer) Hands-on Workflow
  17. 17. 17 Vagrant ‣  Verwaltung virtueller Entwicklungsumgebungen ‣  Vorteil: einfach ganze lokale Umgebungen als Code zu beschreiben und zu teilen ‣  Console: vagrant ‣  Installation: Installer Quellen ‣  Vagrant: http://www.vagrantup.com Development Environments ... das Image einfach nutzbar machen
  18. 18. 18 Beispiel: Vagrantfile Development Environments ... das Image einfach nutzbar machen
  19. 19. Virtualisierung (VirtualBox) 19 Hands-on ... der Workflow Development Environments (Vagrant) Image Creation (Packer) Hands-on Code
  20. 20. 20 Übersicht Hands-on ... die Verzeichnisstruktur
  21. 21. 21 Konfigurationen prüfen und ggf. anpassen ‣  Umgebung: build_images/conf/build_images.properties ‣  Template: build_images/templates/centos/centos65-config.json ‣  Kickstart: build_images/templates/centos/public_html/centos6.cfg Hands-on ... die Konfiguration für unsere Box anpassen
  22. 22. 22 Antfile ‣  Optional: Bash Funktion erstellen um Antfiles direkt ausführen zu können ‣  $EDITOR ~/.profle Hands-on ... die Arbeit mit Ant vereinfachen
  23. 23. 23 Antfile ‣  die wichtigsten Actions Hands-on ... der Workflow im Überblick
  24. 24. 24 Download ‣  Die ISOs die in den Templates verwendet werden konfigurieren build_images/conf/images.conf ‣  Konfigurierte ISOs herunterladen ‣  Anschließend die md5 Summe berechnen und in der Konfiguration eintragen build_images/templates/centos/centos65-config.json Hands-on ... das ISO für die Installation herunterladen
  25. 25. 25 packer validate ‣  JSON Datei auf syntaktische Korrektheit prüfen Hands-on ... Syntax prüfen
  26. 26. 26 packer inspect ‣  Elemente und Konfiguration der JSON Datei anzeigen Hands-on ... die Konfiguration anzeigen
  27. 27. 27 Kickstart / Preseeding ‣  Passend zum Projekt die Kickstart / Preseeding Datei anpassen ‣  OS Version ‣  Sprache und Zeitzone ‣  Partitionierungsschema ‣  ... ‣  Beispiel: build_images/templates/centos/public_html/centos6.cfg Hands-on ... die Konfiguration anzeigen
  28. 28. 28 packer build ‣  Box mit angegeben Typ bauen und optional Puppet ausführen Hands-on ... die Box bauen
  29. 29. 29 Skripte ‣  Die Basisinstallation nach Kickstart / Preseeding erfolgt mit Shell Skripten ‣  Beispielsweise alles für den ersten Puppet Run vorbereiten Hands-on ... die laufende VM konfigurieren
  30. 30. 30 Konventionen für das Verwenden von Puppet ‣  Packer liegt unter build_images/ ‣  Puppet Module liegen unter configuration/modules/ ‣  Hieradata liegt unter configuration/hieradata/ ‣  Modul das angewendet werden soll hat ein Manifest unter tests/init.pp ‣  Der Packer Code: scripts/puppet_apply.sh Hands-on ... eine mögliche Puppet Integration
  31. 31. 31 list ‣  Alle Vagrant Boxen im „work/cache_boxes“ Verzeichnis anzeigen Hands-on ... Boxen anzeigen und ...
  32. 32. 32 publish_local ‣  Die angegebene Box lokal (vagrant add) hinzufügen Hands-on ... Box lokal Vagrant bekannt machen oder ...
  33. 33. 33 publish_remote ‣  Die angegebene via scp hochladen Hands-on ... Box auf einen Webserver für Vagrant ablegen
  34. 34. 34 vmware2ova / vbox2ova ‣  Box-Datei aufräumen, so dass ein Standard konformes OVA entsteht ‣  vbox2ova: metadata.json aus box entfernen ‣  vmware2ova: box mit OVF Tool konvertieren ‣  Die Datei kann dann in eine Virtualisierungslösung importiert werden Hands-on ... Box konvertieren um sie ohne Vagrant verwenden zu können
  35. 35. 35 Box testen 1.  VirtualBox / VMware Fusion – OVA Datei importieren (UI oder Console) 2.  Mit Vagrant die Box nach dem publish_local testen Hands-on ... um die Übersicht zu behalten
  36. 36. 36 Fazit ‣  Entwicklungsmaschinen so nah wie möglich an den produktiven bauen ‣  Immer ein Image für Engineering Tests bereit halten (minimales Golden Image) ‣  Entwicklern immer ein Image für die Entwicklung zur Verfügung stellen ‣  Erfolgskriterium: Wenn die Vagrant Box und das Deployment Tool von Dev verwendet wird, haben wir die richtige Lösung gefunden. ‣  Überall die gleichen Tools für Configuration und Deployment verwenden ‣  Die einfachste Lösung verwenden die funktioniert Hands-on ... um die Übersicht zu behalten
  37. 37. 37 Next Steps 1.  Tools installieren 2.  Beispiel aus unserem Git Server clonen 3.  Skripte ausprobieren, Beteiligung an der Weiterentwicklung erwünscht! J 4.  Dokumentation der Tools vollständig lesen! Hands-on ... um die Übersicht zu behalten
  38. 38. 38 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
  39. 39. Anhang
  40. 40. 40 Quellen ‣  VirtualBox https://www.virtualbox.org/wiki/Documentation ‣  VMware Fusion http://www.vmware.com/de/products/fusion ‣  Packer http://www.packer.io/docs ‣  Vagrant http://docs.vagrantup.com/v2/ Lizenz des Vortrags ‣  Creative Commons (by-nc-nd) Anhang ... wo sie in Ruhe nachlesen können

×