DevOps der Triple-E Klasse
mit Hudson, Maven, Kokki
Multiconf & PyDev
Werner Keil
Eclipse DemoCamp 2013 Karlsruhe
20. November 2013
2

© 2012-2013 Creative Arts & Technologies

Bilder © Maersk Line und Andere
Fahrplan
• Einleitung
• Hudson
• Automatisierung

• Maven
• Build

• Kokki
• Konfiguration
• Multiconf

• PyDev
• Entwicklung

• Demo

• Q&A
3

© 2012-2013 Creative Arts & Technologies
Stapellauf

4

© 2013 Creative Arts & Technologies

Bilder © Maersk Line
Jungfernfahrt

5

© 2013 Creative Arts & Technologies
Was bin Ich?
Werner Keil

Twitter @wernerkeil

• Consultant – Coach
• Creative Cosmopolitan
• Open Source Evangelist
• Software Architect

• Java Godfather
• UOMo Project Lead
• ETCS Guy
…
Email werner@catmedia.us

6

© 2012-2013 Creative Arts & Technologies
Hudson
• Hudson is a powerful and widely used open source
continuous integration server providing
development teams with a reliable way to monitor
changes in source control and trigger a variety of
builds.

(The Hudson Book)

7

© 2012 Creative Arts & Technologies
Hudson | Downloads

8

© 2012 Creative Arts & Technologies
Hudson | Commits

9

© 2012 Creative Arts & Technologies
Hudson | Job Koordination

10

© 2012-2013 Creative Arts & Technologies
Hudson | Job Koordination im Triple-E Stil

11

© 2012-2013 Creative Arts & Technologies
Hudson | Promovierte Builds

12

© 2012-2013 Creative Arts & Technologies
Hudson

DEMO
Maven
Evolution der Build Systeme

14

© 2012-2013 Creative Arts & Technologies
Maven
“Lean” Anwendung

• Nutzen Maven nur für Was es am Besten kann
• Dependency Management
• Nexus

• Managed Environment
• Generiert / Gestartet durch Kokki
• Konfiguriert via Multiconf
• Hudson Plugins
• Zabbix Monitoring
• Kibana Log Analyse

15

© 2012-2013 Creative Arts & Technologies
Missing Link
Erstellen der (Virtuellen) Maschinen

16

© 2012-2013 Creative Arts & Technologies
Viele Virtuelle Maschinen

17

© 2013 Creative Arts & Technologies

Bilder © Maersk Line
Virtual Machine Provisionierung
Vagrant und Oracle VirtualBox (oder vmware)

• Vagrant
• Management virtueller Betriebssysteme

• Virtual Machine
• Oracle VirtualBox
• Häufiger

• Vmware
• Gelegentlich

• Linux Container
• Weitere Option
18

© 2013 Creative Arts & Technologies
Kokki
• Infrastruktur Automation → Configuration
Management

• Teil des Provisionierungsvorgangs
• Bibliothek und einfaches Kommandozeilentool
• Bislang keine Client/Server Komponente

• Könnte GitHub an Stelle einer Client/Server Komponente nutzen

• Alternative zu Puppet/Chef/Cfengine
• Implementiert in Python

19

© 2012-2013 Creative Arts & Technologies
Kokki | Begriffe
• Kokki ist ein Configuration Management
Framework.
• Es kann eigenständig oder als Teil eines komplexeren Systems genutzt
werden.
• Es bedeutet “Koch” in Finnischer Sprache

• Environment: Ausführungsumgebung
• Resource: Beschreibt eine Datei, Service, Paket, etc..
• Provider: Weiß um das Ausführen von Ressourcen

• Kitchen: Container (“Regal”) für Kochbücher
• Cookbook: Container für Rezepte und Bibliotheken
• Recipe: Gruppe von Resourcedefinitionen
• Library: Utility Methoden, Ressourcen und Provider
20

© 2012-2013 Creative Arts & Technologies
Kokki | Beispiel
from kokki import *
with Environment() as env:
Package("vim", action="upgrade")

File("/etc/hosts",
owner = "root",
group = "root",
content = "127.0.0.1 localhostn"
"255.255.255.255 broadcasthostn"
"::1 localhostn"
"fe80::1%lo0 localhostn")
env.run()

21

© 2012-2013 Creative Arts & Technologies
Kokki++ | Multiconf
• Multiconf ist ein Framework zur Beschreibung
komplexer Umgebungen mithilfe von Python.

• Warum
• Es entstand aus dem schlichten Bedarf teils sehr heterogene Java EE
Projekte kontinuierlich zu bauen und auszuliefern.
• Mittels einer Handvoll Python Scripts und einer Handvoll textueller Property
Dateien.
• Mit steigender Anzahl Property Dateien stieg naturgemäß auch die Anzahl
der notwendigen Scripts…
• Aus diesem Dilemma heraus wurde Multiconf geboren.

Leider nur 4 Whys
22

© 2012-2013 Creative Arts & Technologies
Multiconf
• Wie
• Man stelle sich ein Projekt vor, in dem eine stark heterogene Umgebung
unterschiedliche Server wie Tomcat, Jetty, JBoss, Websphere, Glassfish
oder Weblogic erfordert.
• Sie benötigen unterschiedliche Datenbankverbindungen und (mind.) 4
Umgebungen:
• Local (eigenes Entwicklergerät)

• Dev
• Test
• Prod

• Projekt Konfiguration ist ähnlich auf einigen Umgebungen, aber Irgendwas ist
fast immer unterschiedlich. (DB, Ports, Proxies, Log-Dateien, u.dgl.)

23

© 2012 -2013 Creative Arts & Technologies
Multiconf (2)
• Was Multiconf nicht ist
• Multiconf weiß nicht, von selbst, wie man Umgebungen erstellt
• Multiconf weiß nicht, wie es die Bestandteile einer Umgebung erstellen soll
• Multiconf hat keinen Exekutor
• Perfektes Paar mit Systeme wie Kokki
• Selbe Sprache
• Erweiterbare Rezepte und Bibliotheken machen Kokki offen für solche
Erweiterungen

• Was Multiconf ist
• Multiconf erlaubt es einen Software “stack” zu definieren und warnt früh
genug, wen etwas an dessen Definition fehlerhaft oder unvollständig ist.
Andere Tools nutze YAML oder JSON um die Komponenten zu definieren,
doch benötigt man dort wieder eine Möglichkeit, diese Einstellungen zu
validieren. Multiconf ist Beides - Definition und Validierung.
24

© 2012-2013 Creative Arts & Technologies
Multiconf | JSF Beispiel
from javax_faces import ProjectStage
from valid_envs import local, dev, test, uat, prod

def jsf_stages():
with ProjectStage() as ps:
ps.name(local=”Development”,
dev=”Development”,
test=”UnitTest”,
uat=”SystemTest”,
prod=”Production”)

25

© 2012 -2013 Creative Arts & Technologies
Multiconf | Autor
• Multiconf Autor
• Lars Hupfeldt Nielsen
• Alles Gute zum
Geburtstag,
Selma Lagerlöf
wünscht
„Nils Hupfeldtsson“

26

© 2013 Creative Arts & Technologies
Multiconf | Eine Inspiration für
Java Configuration API

• Initiiert von
• Oracle
• Crédit Suisse
• Mit etwas Hilfe u.a. durch
den „Java Godfather“

• Entwurf für
• Einen Java Specification Request (JSR) bei JCP.org
• Siehe: http://java-config.java.net

27

© 2013 Creative Arts & Technologies
PyDev
• PyDev ist ein Produkt von Appcelerator, einer
Softwarefirma, die Webentwicklern bei der
Erstellung plattform-unabhängiger Lösungen für
Handy, Tablet oder Desktop unterstützt
Gewinner des 2011 Eclipse Award
für Best Developer Tool
Appcelerator stellt auch Aptana Studio (enthält
PyDev) oder Titanium Studio her, beides Eclipsebasierende IDEs für Web and Mobile Plattformen
28

© 2012-2013 Creative Arts & Technologies
PyDev | Code Completion

29

© 2012 Creative Arts & Technologies
PyDev | Code Navigation

30

© 2012 Creative Arts & Technologies
PyDev | Code Coverage

31

© 2012 Creative Arts & Technologies
PyDev | Debugging

32

© 2012 Creative Arts & Technologies
PyDev | Unit Tests

33

© 2012 Creative Arts & Technologies
PyDev

DEMO
Zeit zum Plaudern

Q&A
Links
Kokki
https://github.com/samuel/kokki
Multiconf
https://github.com/lhupfeldt/multiconf
PyDev

http://www.pydev.org
Links (2)
Eclipse – Hudson
http://www.eclipse.org/hudson/
Apache Maven
http://www.apache.org/maven/
Java Config API

http://java-config.java.net
Vielen Dank

38

© 2012-2013 Creative Arts & Technologies

Email werner@catmedia.us Twitter @wernerkeil

Bilder © Maersk Line

DevOps der Triple-E Klasse - Eclipse DemoCamp

  • 1.
    DevOps der Triple-EKlasse mit Hudson, Maven, Kokki Multiconf & PyDev Werner Keil Eclipse DemoCamp 2013 Karlsruhe 20. November 2013
  • 2.
    2 © 2012-2013 CreativeArts & Technologies Bilder © Maersk Line und Andere
  • 3.
    Fahrplan • Einleitung • Hudson •Automatisierung • Maven • Build • Kokki • Konfiguration • Multiconf • PyDev • Entwicklung • Demo • Q&A 3 © 2012-2013 Creative Arts & Technologies
  • 4.
    Stapellauf 4 © 2013 CreativeArts & Technologies Bilder © Maersk Line
  • 5.
  • 6.
    Was bin Ich? WernerKeil Twitter @wernerkeil • Consultant – Coach • Creative Cosmopolitan • Open Source Evangelist • Software Architect • Java Godfather • UOMo Project Lead • ETCS Guy … Email werner@catmedia.us 6 © 2012-2013 Creative Arts & Technologies
  • 7.
    Hudson • Hudson isa powerful and widely used open source continuous integration server providing development teams with a reliable way to monitor changes in source control and trigger a variety of builds. (The Hudson Book) 7 © 2012 Creative Arts & Technologies
  • 8.
    Hudson | Downloads 8 ©2012 Creative Arts & Technologies
  • 9.
    Hudson | Commits 9 ©2012 Creative Arts & Technologies
  • 10.
    Hudson | JobKoordination 10 © 2012-2013 Creative Arts & Technologies
  • 11.
    Hudson | JobKoordination im Triple-E Stil 11 © 2012-2013 Creative Arts & Technologies
  • 12.
    Hudson | PromovierteBuilds 12 © 2012-2013 Creative Arts & Technologies
  • 13.
  • 14.
    Maven Evolution der BuildSysteme 14 © 2012-2013 Creative Arts & Technologies
  • 15.
    Maven “Lean” Anwendung • NutzenMaven nur für Was es am Besten kann • Dependency Management • Nexus • Managed Environment • Generiert / Gestartet durch Kokki • Konfiguriert via Multiconf • Hudson Plugins • Zabbix Monitoring • Kibana Log Analyse 15 © 2012-2013 Creative Arts & Technologies
  • 16.
    Missing Link Erstellen der(Virtuellen) Maschinen 16 © 2012-2013 Creative Arts & Technologies
  • 17.
    Viele Virtuelle Maschinen 17 ©2013 Creative Arts & Technologies Bilder © Maersk Line
  • 18.
    Virtual Machine Provisionierung Vagrantund Oracle VirtualBox (oder vmware) • Vagrant • Management virtueller Betriebssysteme • Virtual Machine • Oracle VirtualBox • Häufiger • Vmware • Gelegentlich • Linux Container • Weitere Option 18 © 2013 Creative Arts & Technologies
  • 19.
    Kokki • Infrastruktur Automation→ Configuration Management • Teil des Provisionierungsvorgangs • Bibliothek und einfaches Kommandozeilentool • Bislang keine Client/Server Komponente • Könnte GitHub an Stelle einer Client/Server Komponente nutzen • Alternative zu Puppet/Chef/Cfengine • Implementiert in Python 19 © 2012-2013 Creative Arts & Technologies
  • 20.
    Kokki | Begriffe •Kokki ist ein Configuration Management Framework. • Es kann eigenständig oder als Teil eines komplexeren Systems genutzt werden. • Es bedeutet “Koch” in Finnischer Sprache • Environment: Ausführungsumgebung • Resource: Beschreibt eine Datei, Service, Paket, etc.. • Provider: Weiß um das Ausführen von Ressourcen • Kitchen: Container (“Regal”) für Kochbücher • Cookbook: Container für Rezepte und Bibliotheken • Recipe: Gruppe von Resourcedefinitionen • Library: Utility Methoden, Ressourcen und Provider 20 © 2012-2013 Creative Arts & Technologies
  • 21.
    Kokki | Beispiel fromkokki import * with Environment() as env: Package("vim", action="upgrade") File("/etc/hosts", owner = "root", group = "root", content = "127.0.0.1 localhostn" "255.255.255.255 broadcasthostn" "::1 localhostn" "fe80::1%lo0 localhostn") env.run() 21 © 2012-2013 Creative Arts & Technologies
  • 22.
    Kokki++ | Multiconf •Multiconf ist ein Framework zur Beschreibung komplexer Umgebungen mithilfe von Python. • Warum • Es entstand aus dem schlichten Bedarf teils sehr heterogene Java EE Projekte kontinuierlich zu bauen und auszuliefern. • Mittels einer Handvoll Python Scripts und einer Handvoll textueller Property Dateien. • Mit steigender Anzahl Property Dateien stieg naturgemäß auch die Anzahl der notwendigen Scripts… • Aus diesem Dilemma heraus wurde Multiconf geboren. Leider nur 4 Whys 22 © 2012-2013 Creative Arts & Technologies
  • 23.
    Multiconf • Wie • Manstelle sich ein Projekt vor, in dem eine stark heterogene Umgebung unterschiedliche Server wie Tomcat, Jetty, JBoss, Websphere, Glassfish oder Weblogic erfordert. • Sie benötigen unterschiedliche Datenbankverbindungen und (mind.) 4 Umgebungen: • Local (eigenes Entwicklergerät) • Dev • Test • Prod • Projekt Konfiguration ist ähnlich auf einigen Umgebungen, aber Irgendwas ist fast immer unterschiedlich. (DB, Ports, Proxies, Log-Dateien, u.dgl.) 23 © 2012 -2013 Creative Arts & Technologies
  • 24.
    Multiconf (2) • WasMulticonf nicht ist • Multiconf weiß nicht, von selbst, wie man Umgebungen erstellt • Multiconf weiß nicht, wie es die Bestandteile einer Umgebung erstellen soll • Multiconf hat keinen Exekutor • Perfektes Paar mit Systeme wie Kokki • Selbe Sprache • Erweiterbare Rezepte und Bibliotheken machen Kokki offen für solche Erweiterungen • Was Multiconf ist • Multiconf erlaubt es einen Software “stack” zu definieren und warnt früh genug, wen etwas an dessen Definition fehlerhaft oder unvollständig ist. Andere Tools nutze YAML oder JSON um die Komponenten zu definieren, doch benötigt man dort wieder eine Möglichkeit, diese Einstellungen zu validieren. Multiconf ist Beides - Definition und Validierung. 24 © 2012-2013 Creative Arts & Technologies
  • 25.
    Multiconf | JSFBeispiel from javax_faces import ProjectStage from valid_envs import local, dev, test, uat, prod def jsf_stages(): with ProjectStage() as ps: ps.name(local=”Development”, dev=”Development”, test=”UnitTest”, uat=”SystemTest”, prod=”Production”) 25 © 2012 -2013 Creative Arts & Technologies
  • 26.
    Multiconf | Autor •Multiconf Autor • Lars Hupfeldt Nielsen • Alles Gute zum Geburtstag, Selma Lagerlöf wünscht „Nils Hupfeldtsson“ 26 © 2013 Creative Arts & Technologies
  • 27.
    Multiconf | EineInspiration für Java Configuration API • Initiiert von • Oracle • Crédit Suisse • Mit etwas Hilfe u.a. durch den „Java Godfather“ • Entwurf für • Einen Java Specification Request (JSR) bei JCP.org • Siehe: http://java-config.java.net 27 © 2013 Creative Arts & Technologies
  • 28.
    PyDev • PyDev istein Produkt von Appcelerator, einer Softwarefirma, die Webentwicklern bei der Erstellung plattform-unabhängiger Lösungen für Handy, Tablet oder Desktop unterstützt Gewinner des 2011 Eclipse Award für Best Developer Tool Appcelerator stellt auch Aptana Studio (enthält PyDev) oder Titanium Studio her, beides Eclipsebasierende IDEs für Web and Mobile Plattformen 28 © 2012-2013 Creative Arts & Technologies
  • 29.
    PyDev | CodeCompletion 29 © 2012 Creative Arts & Technologies
  • 30.
    PyDev | CodeNavigation 30 © 2012 Creative Arts & Technologies
  • 31.
    PyDev | CodeCoverage 31 © 2012 Creative Arts & Technologies
  • 32.
    PyDev | Debugging 32 ©2012 Creative Arts & Technologies
  • 33.
    PyDev | UnitTests 33 © 2012 Creative Arts & Technologies
  • 34.
  • 35.
  • 36.
  • 37.
    Links (2) Eclipse –Hudson http://www.eclipse.org/hudson/ Apache Maven http://www.apache.org/maven/ Java Config API http://java-config.java.net
  • 38.
    Vielen Dank 38 © 2012-2013Creative Arts & Technologies Email werner@catmedia.us Twitter @wernerkeil Bilder © Maersk Line