IT Engineering – Continuous Delivery
Development Tool Chain
Virtualisierung, Packer, Vagrant und Puppet
Alexander Pacnik
K...
2
Ziele
‣  Continuous Delivery – einfache, atomare Änderungen sollten immer möglich sein
Voraussetzung
‣  Dev/Prod Parity ...
3
Problemstellung
‣  Entwicklungsumgebung für Operations zur Verfügung stellen
‣  Entwicklungsumgebung für Development zur...
Virtualisierung
4
Virtualisierung
... die Basis für unsere Boxen
Development
Environments
(Vagrant)
Image
Creation
(Packer...
5
VirtualBox
‣  Virtualisierungslösung die auf OSX, Linux und Windows funktioniert
‣  Vorteil: nur ein Host Betriebssystem...
6
VMware Fusion
‣  Virtualisierungslösung für OSX
‣  Vorteil: Bessere Integration in die VMware Welt
‣  Console: vmrun (st...
Virtualisierung
(VirtualBox)
7
Image Bauen
... mit Packer
Development
Environments
(Vagrant)
Image
Creation
(Packer)
Hands...
http://www.packer.io/intro/index.html 8
Was ist Packer?
‣  Packer is an open source tool for creating identical machine im...
http://www.packer.io/intro/index.html 9
Installation
‣  Archiv herunterladen und auspacken
‣  Binaries in den PATH aufnehm...
http://www.packer.io/docs/basics/terminology.html 10
Terminologie
‣  Artifacts – das Ergebnis eines Builds (Image)
‣  Temp...
http://www.packer.io/docs/templates/configuration-templates.html 11
Templates
‣  Alles zwischen { ... } in der JSON Datei
...
http://www.packer.io/docs/templates/configuration-templates.html 12
Variablen in Templates
‣  Werden in einen "variables":...
13
Provisioners
‣  Starten Skripte (Shell, Puppet, ...) in der laufenden VM
‣  Können auf Builds eingeschränkt werden (nur...
14
Debugging
‣  Viele Builder unterstützen "headless": "false“
‣  Am Ende der Skripte ein Sleep einbauen und SSH in die Ma...
15
Beispiel:
Image Bauen
... Debugging wenn Fehler auftreten
Virtualisierung
(VirtualBox)
16
Development Environments
... das Image einfach nutzbar machen
Development
Environments
(Va...
17
Vagrant
‣  Verwaltung virtueller Entwicklungsumgebungen
‣  Vorteil: einfach ganze lokale Umgebungen als Code zu beschre...
18
Beispiel: Vagrantfile
Development Environments
... das Image einfach nutzbar machen
Virtualisierung
(VirtualBox)
19
Hands-on
... der Workflow
Development
Environments
(Vagrant)
Image
Creation
(Packer)
Hands...
20
Übersicht
Hands-on
... die Verzeichnisstruktur
21
Konfigurationen prüfen und ggf. anpassen
‣  Umgebung: build_images/conf/build_images.properties
‣  Template: build_imag...
22
Antfile
‣  Optional: Bash Funktion erstellen um Antfiles direkt ausführen zu können
‣  $EDITOR ~/.profle
Hands-on
... d...
23
Antfile
‣  die wichtigsten Actions
Hands-on
... der Workflow im Überblick
24
Download
‣  Die ISOs die in den Templates verwendet werden konfigurieren
build_images/conf/images.conf
‣  Konfigurierte...
25
packer validate
‣  JSON Datei auf syntaktische Korrektheit prüfen
Hands-on
... Syntax prüfen
26
packer inspect
‣  Elemente und Konfiguration der JSON Datei anzeigen
Hands-on
... die Konfiguration anzeigen
27
Kickstart / Preseeding
‣  Passend zum Projekt die Kickstart / Preseeding Datei anpassen
‣  OS Version
‣  Sprache und Ze...
28
packer build
‣  Box mit angegeben Typ bauen und optional Puppet ausführen
Hands-on
... die Box bauen
29
Skripte
‣  Die Basisinstallation nach Kickstart / Preseeding erfolgt mit Shell Skripten
‣  Beispielsweise alles für den...
30
Konventionen für das Verwenden von Puppet
‣  Packer liegt unter build_images/
‣  Puppet Module liegen unter configurati...
31
list
‣  Alle Vagrant Boxen im „work/cache_boxes“ Verzeichnis anzeigen
Hands-on
... Boxen anzeigen und ...
32
publish_local
‣  Die angegebene Box lokal (vagrant add) hinzufügen
Hands-on
... Box lokal Vagrant bekannt machen oder ....
33
publish_remote
‣  Die angegebene via scp hochladen
Hands-on
... Box auf einen Webserver für Vagrant ablegen
34
vmware2ova / vbox2ova
‣  Box-Datei aufräumen, so dass ein Standard konformes OVA entsteht
‣  vbox2ova: metadata.json au...
35
Box testen
1.  VirtualBox / VMware Fusion – OVA Datei importieren (UI oder Console)
2.  Mit Vagrant die Box nach dem pu...
36
Fazit
‣  Entwicklungsmaschinen so nah wie möglich an den produktiven bauen
‣  Immer ein Image für Engineering Tests ber...
37
Next Steps
1.  Tools installieren
2.  Beispiel aus unserem Git Server clonen
3.  Skripte ausprobieren, Beteiligung an d...
38
Vielen Dank für Ihre Aufmerksamkeit
Kontakt
Alexander Pacnik
IT Engineering & Operations
Project Management
inovex GmbH...
Anhang
40
Quellen
‣  VirtualBox
https://www.virtualbox.org/wiki/Documentation
‣  VMware Fusion
http://www.vmware.com/de/products/...
Nächste SlideShare
Wird geladen in …5
×

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

536 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
536
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
8
Kommentare
0
Gefällt mir
3
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

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

×