entwicklungsumgebungen packer, vagrant, puppet alexander ... · entwicklungsumgebungen - packer,...

30
Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander Pacnik Mannheim, 10.11.2014

Upload: others

Post on 26-Jun-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Entwicklungsumgebungen

Packer, Vagrant, Puppet

Alexander Pacnik Mannheim, 10.11.2014

Page 2: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

2

inovex ... über inovex und den Referenten

Page 3: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

3

Entwicklungsumgebungen ... Übersicht

Einführung

Packer – Konfiguration

Packer – Image erstellen

Vagrant – verwenden

Page 4: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

4

Entwicklungsumgebungen ... Einführung

Aufgaben ‣  Entwicklungsumgebung bereitstellen (Development)

‣  Abnahmeumgebung bereitstellen (QA)

‣  Produktionsumgebung bereitstellen (Operations)

Page 5: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

5

Entwicklungsumgebungen ... Einführung

Herausforderungen ‣  Continuous Integration – Code ständig integrieren und testen

‣  Continuous Delivery – vollständige Automatisierung der Prozesse und Tests

‣  Dev / Prod Parity – Werkzeuge und Prozesse der Umgebungen identisch halten

‣  Infrastructure as Code – Nachvollziehbarkeit, alles kommt aus einem Repository

Page 6: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

1 Quelle: packer.io 6

Packer ... Was ist Packer?

Ziel ‣  Packer is a tool for creating identical machine images for multiple platforms from a

single source configuration. 1

‣  Dieser Vortrag zeigt die Verwendung von Packer zur Erstellung von lokalen Entwicklungsumgebungen

‣  Beispiel: Image erstellen

‣  Beispiel: Image mit Vagrant verwenden

Page 7: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

7

Entwicklungsumgebungen ... Übersicht

Einführung

Packer – Konfiguration

Packer – Image erstellen

Vagrant – verwenden

Page 8: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

8

Packer ... das heutige Beispiel in der Übersicht

Page 9: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/configuration-templates.html 9

Packer ... die Struktur der Packer Templates

Page 10: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/builders.html 10

1. Builder ... die Installation der VM

Builder ‣  beschreiben die virtuelle Infrastruktur auf der die Images erstellt werden sollen

‣  Unterstützt werden: Virtualbox, VMware, Amazon AWS, ...

Vorgehen 1.  Startet die VM auf der entsprechenden Plattform

2.  Startet die Betriebssysteminstallation (Kickstart, Boostrap oder Unattended.xml)

3.  Wartet auf den SSH Login

Page 11: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/builders.html 11

1. Builder ... Beispiel: Virtualbox

Page 12: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/provisioners.html 12

2. Provisioners ... die Konfiguration der VM

Provisioners ‣  Skripte die nach der Betriebssysteminstallation aufgerufen werden können

‣  Unterstützt werden: Shell, Puppet, Chef, Salt, ...

Vorgehen 1.  Ruft einen oder mehrere Provisioner Blöcke in der entsprechenden Reihenfolge auf

Page 13: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/provisioners.html 13

2. Provisioners ... Beispiel

Page 14: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/post-processors.html 14

3. Post-Processors ... die virtuelle Maschine paketieren

post-processors ‣  Aktionen die nach der Erstellung ausgeführt werden

‣  Unterstützt werden: Vagrant, Docker, ...

Vorgehen (Vagrant) 1.  Virtuelle Maschine stoppen

2.  Dateien komprimieren

Page 15: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/post-processors.html 15

3. Post-Processors ... Beispiel: die virtuelle Maschine für Vagrant paketieren

Page 16: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/user-variables.html 16

4. Variables ... Der Umgang mit dynamischen Templates

‣  Variablen definieren

‣  Variablen verwenden

Page 17: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/user-variables.html 17

4. Variables ... Beispiel: Datei für versionsspezifische Konfigurationen

Page 18: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

Quelle: https://packer.io/docs/templates/user-variables.html 18

4. Variables ... Beispiel: Wert einer Variablen in die virtuelle Maschine durch reichen

1.  Variable im Template definieren

2.  Variable im Template als Environment Variable der VM bekannt machen

3.  Variable über den Aufruf beim Start übergeben

4.  Variable kann dann in Provisioner-Skripten ganz normal verwendet werden

Page 19: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

19

Entwicklungsumgebungen ... Übersicht

Einführung

Packer – Konfiguration

Packer – Image erstellen

Vagrant – verwenden

Page 20: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

20

Packer verwenden ... Code testen und Image erstellen

Page 21: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

21

Packer Debugging ... wenn Fehler auftreten

‣  im JSON Template kann der Parameter “headless” auf “false” gesetzt werden, um die Virtualbox Console anzuzeigen

‣  ssh in die virtuelle Maschnine während Packer läuft

(Port wird am Anfang im Output angezeigt: “ssh -p nnnn [email protected]”)

‣  da die VM am Ende der Provisionierung ausgeschaltet wird, sollte ein sleep am Ende eines der Shell Skripte eingebaut werden, um genug Zeit für das Debugging per SSH zu haben.

‣  Packer Debug Logging kann mit der Umgebungsvariable PACKER_LOG=irgend_ein_Wert aktiviert werden

Page 22: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

22

Packer ... Fazit

Packer ‣  Maschine Images von DEV bis Prod mit den gleichen Code erstellen

‣  Nur den minimal notwendigen Code mit Shell Skripten erstellen

‣  Konfigurationsmanagement mit Puppet, Chef, ... umsetzen

‣  Nach Möglichkeit eigene Paket- und ISO-Repositories verwenden

‣  Versions spezifische Konfigurationen auslagern

Page 23: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

23

Entwicklungsumgebungen ... Übersicht

Einführung

Packer – Konfiguration

Packer – Image erstellen

Vagrant – verwenden

Page 24: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

24

Vagrant ... Überblick

Vagrant Vorteile ‣  Steuert lokale Virtualbox oder VMware Installation ‣  Lokale Entwicklungsumgebung von einer definierten Baseline starten

‣  Vorinstallierte VMs über einen zentralen Webserver zum Download anbieten

Page 25: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

25

Vagrant ... Beispiel: Vagrantfile zum testen der Packer Artefakte

Page 26: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

26

Vagrant ... Das neue Image testen

Page 27: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

1 Quelle: https://docs.puppetlabs.com/guides/tests_smoke.html 2 Quelle: http://de.slideshare.net/inovex/puppet-designing-modules 27

Vagrant ... Beispiel: Vagrantfile zum testen von Puppet Code

Puppet mit Packer verwenden ‣  Am einfachsten ist es Puppet Module mit einer „tests/init.pp“1 zu versehen, die mit

puppet apply ausführbar ist

‣  Idealerweise wird der Puppet Code in Components / Profiles und Roles gegliedert2

Puppet mit Vagrant verwenden

Page 28: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

28

Vagrant ... Fazit

Takeaway ‣  Packer: ideal zum Erstellen von Images, als Baseline für Projekte

‣  Puppet: übernimmt die Konfiguration des Images

‣  Vagrant: ideal um lokale Entwicklungsumgebungen zu steuern

‣  Konfiguration und initiale Installation so weit wie möglich schon mit Packer umsetzen

‣  Images als auch Vagrantfiles immer versioniert in einem Repository ablegen

Page 29: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

29

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: [email protected]

Page 30: Entwicklungsumgebungen Packer, Vagrant, Puppet Alexander ... · Entwicklungsumgebungen - Packer, Vagrant und Puppet Author: Alexander Pacnik Subject: Entwicklungsumgebungen - Packer,

30

Lizenz des Vortrags ‣  Creative Commons (by-nc-nd)

Anhang