Weitere ähnliche Inhalte Ähnlich wie DevOps der Triple-E Klasse - Eclipse DemoCamp (20) Mehr von Werner Keil (20) DevOps der Triple-E Klasse - Eclipse DemoCamp1. DevOps der Triple-E Klasse
mit Hudson, Maven, Kokki
Multiconf & PyDev
Werner Keil
Eclipse DemoCamp 2013 Karlsruhe
20. November 2013
3. Fahrplan
• Einleitung
• Hudson
• Automatisierung
• Maven
• Build
• Kokki
• Konfiguration
• Multiconf
• PyDev
• Entwicklung
• Demo
• Q&A
3
© 2012-2013 Creative Arts & Technologies
6. 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
7. 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
10. Hudson | Job Koordination
10
© 2012-2013 Creative Arts & Technologies
11. Hudson | Job Koordination im Triple-E Stil
11
© 2012-2013 Creative Arts & Technologies
15. 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
18. 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
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
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
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
• 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
24. 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
25. 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
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 | 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
28. 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
29. PyDev | Code Completion
29
© 2012 Creative Arts & Technologies
30. PyDev | Code Navigation
30
© 2012 Creative Arts & Technologies
31. PyDev | Code Coverage
31
© 2012 Creative Arts & Technologies
33. PyDev | Unit Tests
33
© 2012 Creative Arts & Technologies
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