SlideShare a Scribd company logo
1 of 86
Download to read offline
© Zühlke 2012
Torben Knerr, Klaus Alfert
Zu viele Köche verderben
den Brei…
Kochschule für Devs und Ops mit Chef, Vagrant & Co
22. Januar 2013
Folie 1
© Zühlke 2012
Ein typisches Java Projekt:
• Web Applikation
• Datenbank
• Memcached
• Nginx
• GeoServer
Cluster und Failover sind natürlich auch gefordert!
Unser letztes Projekt…
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Nginx
Memcached
Tomcat Tomcat
DB Master
DB Slave
GeoServer App
22. Januar 2013 Folie 2
© Zühlke 2012
Unser letztes Projekt…
Mit einer typischen Deployment Pipeline:
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Lokal DEV TEST PROD
22. Januar 2013 Folie 3
© Zühlke 2012
Unser letztes Projekt…
Und typischen Problemen:
• Alle Umgebungen sind unterschiedlich
• Keiner kennt die Unterschiede so richtig
• Neue Entwickler brauchen 3 Tage bis die Umgebung lokal läuft
• Komplexere Szenarien sind lokal nicht testbar
• Lange Feedback-Zyklen in „shared“ Umgebungen (DEV)
• Unterschiedliche Ansprechpartner für Netz / OS / DB /…
• Und wie immer…
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 4
© Zühlke 2012
Ein erster Lösungsansatz:
Hey, wir bauen VMs!
Das hilft schon mal weiter:
• Vorbereitete VMs für die Entwickler mit
Tomcat, Datenbank, Nginx, etc…
• Mit viel Liebe von Hand gefertigt
• Das Standardvorgehen bei unseren
Embedded-Kollegen
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013
© Zühlke 2012
Ein erster Lösungsansatz:
Hey, wir bauen VMs!
Aber…
• Manuelles Management von VMs
ist schwierig (oder zumindest lästig)
• Prozesstreue ist von großer Bedeutung
• Wie versioniert man eigentlich eine
40GB große VM? In Subversion?
• Funktioniert lokal auf Entwickler PCs,
aber unpassend für zentrale Infrastruktur
• Wie parametriert man solche VMs?
Fazit: hilft, aber geht nicht weit genug!
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 7
© Zühlke 2012
Warum Scripting?
• Leichtgewichtige Skripte statt fetter VMs
– Infrastruktur kann versioniert werden
• Umgebungen können reproduzierbar aufgesetzt werden
– Möglichst wenig manuelle Tätigkeiten
– Ausgangsbasis für „saubere“ Deployments
• Umgebungen werden explizit designed
– Entstehen nicht zufällig
– Werden explizit als ausführbare Spezifikation beschrieben
Wir haben Kontrolle über unsere Umgebung!
Unsere Lösung:
Wir skripten VMs!
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 8
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Willkommen in der
DevOps Küche!
Infrastruktur á la Carte
22. Januar 2013
Folie 9
© Zühlke 2012
Ziel: einfache Infrastruktur automatisiert aufsetzen
• Zum Beispiel auf dem Entwickler PC
• Separate VM für App Server und Datenbank
• Jederzeit reproduzierbar („clean setup“)
Unser Beispiel Szenario
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
App Server VM
Tomcat
Datenbank VM
PostgreSQL
.war
22. Januar 2013 Folie 10
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Zutat 1:
Wir brauchen VMs
22. Januar 2013
Folie 11
© Zühlke 2012
Zutat 1: Wir brauchen VMs
Enter Vagrant
Was ist Vagrant?
• Vagrant ist Automatisierung für VirtualBox
• Konfiguration der VMs wird in ein Vagrantfile ausgelagert
• Einfache Befehle zum steuern der VMs:
– vagrant up
– vagrant ssh
– vagrant halt
– …
• http://vagrantup.com
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 12
Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
Basebox
Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
App Server VM
Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
Datenbank VM
Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant
vagrant up
Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant
vagrant ssh
© Zühlke 2012
Zutat 1: Wir brauchen VMs
Ein Blick in die VirtualBox GUI
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Ist das die App Server VM?
Oder doch die Datenbank VM?
22. Januar 2013 Folie 19
Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
Name, CPUs, RAM, etc…
Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
vagrant reload
© Zühlke 2012
Zutat 1: Wir brauchen VMs
Kontrolle in der VirtualBox GUI
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 24
und die VM Parameter stimmen auch!
Besser!
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Zutat 2:
Provisionierung
22. Januar 2013
Folie 25
© Zühlke 2012
Zutat 2: Provisionierung
Zurück zu unserem Szenario
Nackte VMs reichen nicht
• Auf der DB-VM brauchen wir eine Datenbank
z.B. PostgreSQL
• Auf dem App-VM brauchen wir einen Tomcat
Installation und Konfiguration dieser Software
kann Chef übernehmen!
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 26
© Zühlke 2012
Zutat 2: Provisionierung
Enter Chef
Was ist Chef?
• Chef ist Konfigurationsmanagement für Infrastruktur
• Installiert & konfiguriert Systeme von Grund auf
• Bietet eine DSL um Infrastruktur auf einer
angemessenen Abstraktionsebene zu beschreiben
Mehr dazu:
• http://www.opscode.com/chef/
Vagrant unterstützt die Provisionierung
von VMs via Chef!
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 27
Zutat 2: Provisionierung – PostgreSQL installieren
Zutat 2: Provisionierung – PostgreSQL installieren
Stelle den PostgreSQL Server bereit
Zutat 2: Provisionierung – PostgreSQL installieren
Spezifische Konfiguration
vagrant up db
Was steht im PostgreSQL
Rezept?
Installiere das Package
Erzeuge die Konfig-Datei
Erzeuge die Konfig-Datei
Erzeuge die andere Konfig-Datei
Starte PostgreSQL als Service
Der Server ist auch selbst ein Client!
Zutat 2: Provisionierung – das gleiche mit Tomcat…
Zutat 2: Provisionierung – das gleiche mit Tomcat…
Stelle den Tomcat bereit
Zutat 2: Provisionierung – das gleiche mit Tomcat…
Tomcat Konfiguration
vagrant up web
© Zühlke 2012
Die Philosophie von Chef
Spezifikation des Zielzustandes
• Idempotenz
• „Selbstheilung“
DSL abstrahiert von systemspezifischen Details
• Resourcen
• Provider für das jeweilige System
Küche als Namensgeber
• Chef, Cookbook, Recipe, Knife, …
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 45
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Zutat 3:
Kochbuchverwaltung
22. Januar 2013
Folie 46
© Zühlke 2012
Zutat 3: Kochbuchverwaltung
Zurück zu unserem Szenario
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Woher kommt eigentlich das
PostgreSQL Kochbuch / Rezept ???
Folie 47
© Zühlke 2012
Zutat 3: Kochbuchverwaltung
Hier findet man Kochbücher!
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
http://community.opscode.com/cookbooks/
https://github.com/search?q=cookbook
Folie 48
© Zühlke 2012
Zutat 3: Kochbuchverwaltung
Enter Librarian
Was ist Librarian?
• Librarian bietet Dependency Management für Cookbooks
• Automatisiertes herunterladen und extrahieren
Abhängigkeiten werden in einem Cheffile spezifiziert
• Transitive Abhängigkeiten werden mit aufgelöst
• Unter Berücksichtigung von Quellen und Versionen
Mehr dazu
• https://github.com/applicationsonline/librarian
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 49
© Zühlke 2012
Zutat 3: Kochbuchverwaltung
Ein einfaches Cheffile
Cheffile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 50
Zutat 3: Kochbuchverwaltung – ein einfaches Cheffile
Librarian „installiert“ die Kochbücher
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Zutat 4:
Eigene Kochbücher
22. Januar 2013
Folie 52
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Zurück zu unserem Szenario
VMs mit Infrastruktur reichen nicht
• Wir brauchen ein DB-Schema und eine DB-User
für unsere Anwendung
• Das WAR-File für unsere Anwendung muss im
Tomcat deployed werden
Dafür gibt es kein wiederverwendbares
Kochbuch, das wir einfach nutzen können!
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 53
© Zühlke 2012
Mit Knife kann man Kochbücher erstellen
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 54
Zutat 4: Eigene Kochbücher
Enter Knife
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Die Struktur des myapp Kochbuchs
Ein Kochbuch, aber mit separaten Rezepten um die
Datenbank und Webapp aufzusetzen
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 55
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Die Struktur des myapp Kochbuchs
In den Attributen werden Default-Werte definiert
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
Folie 56
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Die Struktur des myapp Kochbuchs
• myapp/attributes/db.rb
• myapp/attributes/web.rb
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 57
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Die Struktur des myapp Kochbuchs
Im „db“ Rezept wird PostgreSQL installiert, dann
die Datenbank und der DB User angelegt
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
Folie 58
Ohne PostgreSQL macht es keinen Sinn
Hilfreiche Resourcen dazunehmen
Zuerst den User anlegen
Die Datenbank erzeugen
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Im Vagrantfile myapp::db anwenden
Vagrantfile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 64
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Im Vagrantfile myapp::db anwenden
Vagrantfile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Statt postgresql::server
Folie 65
vagrant provision db
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Erweitertes Cheffile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 67
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Die Struktur des myapp Kochbuchs
Im „web“ Rezept wird Tomcat installiert, die
Webapp konfiguriert und im Tomcat deployed
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
myapp
attributes
recipes
db.rb
web.rb
db.rb
default.rb
web.rb
Folie 68
Wir müssen Tomcat installieren
Hier liegt unser .war File
Datenbankkonfiguration
Applikation in Tomcat deployen
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Im Vagrantfile myapp::web anwenden
Vagrantfile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 74
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Im Vagrantfile myapp::web anwenden
Vagrantfile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 75
Statt dem tomcat Rezept
© Zühlke 2012
Zutat 4: Eigene Kochbücher
Im Vagrantfile myapp::web anwenden
Vagrantfile
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
C
Folie 76
Hier läuft die Datenbank
vagrant provision web
Läuft unsere Anwendung denn nun?
Oder was auch immer gerade ist…
Wir haben das Yabe Beispiel vom Play! Framework benutzt:
http://www.playframework.org/documentation/1.0/samples
© Zühlke 2012
DevOps mit Chef & Co
Torben Knerr, Klaus Alfert
Die DevOps-Küche
22. Januar 2013
Folie 80
© Zühlke 2012
Rekapitulation:
Was haben wir bisher gemacht
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013
Zutat 1 Wir brauchen VMs
Zutat 2 Provisionierung
Zutat 3 Kochbuchverwaltung
Zutat 4 Eigene Kochbücher
+
Folie 81
+
+
© Zühlke 2012
Textuelle Spezifikation der Infrastruktur
• Keine Shell-Skripte, sondern Spezifikation des Zielzustandes
• Knackig kurz, aber nicht kryptisch
• SCM-freundlich: Kilobyte statt Gigabyte
• Komplexe Infrastruktur steht auf Knopfdruck bereit
• Immer wieder ausführbar und wiederholbar
• Wiederverwendbarkeit auf Infrastrukturebene
Was haben wir erreicht?
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 82
© Zühlke 2012
Wir haben nur an der Oberfläche geraspelt
Chef & Vagrant bieten noch sehr viel mehr
• Provisionierung in der Cloud oder ihrer Virtualisierungsumgebung
• Erweiterungsmöglichkeiten der DSL dank Ruby
– Eigene Resourcen und Provider
– Programmierung innerhalb der Rezepte
• Chef-Server
– Rechte-Management
– Search
– Environments
Eine populäre Alternative zu Chef ist Puppet.
• Bietet einen reinen DSL-Ansatz ohne Ruby.
22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 83
© Zühlke 2012
Wenn Infrastruktur Code ist, dann muss
Infrastruktur auch getestet werden!
DevOps mit Chef & Co | Torben Knerr, Klaus Alfert
Lint Checking
• foodcritic
Unit-Level Testing
• chefspec
• fauxhai
Smoke Tests (von Innen)
• chef-minitest-handler
Acceptance Testing (von Außen)
• cucumber-nagios
22. Januar 2013 Folie 84
Dr. Klaus Alfert
Email: klaus.alfert@zuehlke.com
http://xing.to/alfert
Torben Knerr
Email: torben.knerr@zuehlke.com
http://xing.to/tknerr
Guten Appetit!
Folien: http://bit.ly/z_slideshare
Beispiele: https://github.com/tknerr/oop-chef-demo

More Related Content

Viewers also liked

Wundertafel0
Wundertafel0Wundertafel0
Wundertafel0showte
 
Elementos de un pc
Elementos de un pcElementos de un pc
Elementos de un pcalvariiito
 
admineo - Exceed2013 Berlin
admineo - Exceed2013 Berlinadmineo - Exceed2013 Berlin
admineo - Exceed2013 BerlinEugen Martin
 
Vie à Lasne - septembre 2015 - 1/2
Vie à Lasne - septembre 2015 - 1/2Vie à Lasne - septembre 2015 - 1/2
Vie à Lasne - septembre 2015 - 1/2comlasne
 
Les débuts du libre accès aux résultats de la recherche
Les débuts du libre accès aux résultats de la recherche Les débuts du libre accès aux résultats de la recherche
Les débuts du libre accès aux résultats de la recherche LENABOSC
 
1500 1600 مخطوطة كاملة للمصحف الشريف
1500 1600 مخطوطة كاملة للمصحف الشريف1500 1600 مخطوطة كاملة للمصحف الشريف
1500 1600 مخطوطة كاملة للمصحف الشريفسمير بسيوني
 
Luis Colombo Plan de Negocios
Luis Colombo Plan de NegociosLuis Colombo Plan de Negocios
Luis Colombo Plan de Negocios01725
 
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250HERRAMIENTAS SINCRONAS Y ASINCRONAS 250
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250erika yajaira
 
Seccion xx
Seccion xxSeccion xx
Seccion xx06160191
 
Bâle tend la main aux conjoints d’expats
Bâle tend la main aux conjoints d’expatsBâle tend la main aux conjoints d’expats
Bâle tend la main aux conjoints d’expatsThomas Dioudonnat
 
مخطوطة كاملة للمصحف الشريف
مخطوطة كاملة للمصحف الشريفمخطوطة كاملة للمصحف الشريف
مخطوطة كاملة للمصحف الشريفسمير بسيوني
 
Googledrive 131227164751 phpapp01
Googledrive 131227164751 phpapp01Googledrive 131227164751 phpapp01
Googledrive 131227164751 phpapp01enksantiago
 

Viewers also liked (20)

9ème Forum des parties prenantes sur les Chaînes d’approvisionnement responsa...
9ème Forum des parties prenantes sur les Chaînes d’approvisionnement responsa...9ème Forum des parties prenantes sur les Chaînes d’approvisionnement responsa...
9ème Forum des parties prenantes sur les Chaînes d’approvisionnement responsa...
 
Wundertafel0
Wundertafel0Wundertafel0
Wundertafel0
 
Elementos de un pc
Elementos de un pcElementos de un pc
Elementos de un pc
 
Pom2001d
Pom2001dPom2001d
Pom2001d
 
admineo - Exceed2013 Berlin
admineo - Exceed2013 Berlinadmineo - Exceed2013 Berlin
admineo - Exceed2013 Berlin
 
Vie à Lasne - septembre 2015 - 1/2
Vie à Lasne - septembre 2015 - 1/2Vie à Lasne - septembre 2015 - 1/2
Vie à Lasne - septembre 2015 - 1/2
 
Les débuts du libre accès aux résultats de la recherche
Les débuts du libre accès aux résultats de la recherche Les débuts du libre accès aux résultats de la recherche
Les débuts du libre accès aux résultats de la recherche
 
Sitesddnew
SitesddnewSitesddnew
Sitesddnew
 
1500 1600 مخطوطة كاملة للمصحف الشريف
1500 1600 مخطوطة كاملة للمصحف الشريف1500 1600 مخطوطة كاملة للمصحف الشريف
1500 1600 مخطوطة كاملة للمصحف الشريف
 
Luis Colombo Plan de Negocios
Luis Colombo Plan de NegociosLuis Colombo Plan de Negocios
Luis Colombo Plan de Negocios
 
SAP
SAPSAP
SAP
 
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250HERRAMIENTAS SINCRONAS Y ASINCRONAS 250
HERRAMIENTAS SINCRONAS Y ASINCRONAS 250
 
Sturgis
Sturgis Sturgis
Sturgis
 
Cadic Intégrale
Cadic IntégraleCadic Intégrale
Cadic Intégrale
 
Seccion xx
Seccion xxSeccion xx
Seccion xx
 
Bâle tend la main aux conjoints d’expats
Bâle tend la main aux conjoints d’expatsBâle tend la main aux conjoints d’expats
Bâle tend la main aux conjoints d’expats
 
Paris vous connaissez
Paris vous connaissezParis vous connaissez
Paris vous connaissez
 
مخطوطة كاملة
مخطوطة كاملةمخطوطة كاملة
مخطوطة كاملة
 
مخطوطة كاملة للمصحف الشريف
مخطوطة كاملة للمصحف الشريفمخطوطة كاملة للمصحف الشريف
مخطوطة كاملة للمصحف الشريف
 
Googledrive 131227164751 phpapp01
Googledrive 131227164751 phpapp01Googledrive 131227164751 phpapp01
Googledrive 131227164751 phpapp01
 

Similar to Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vagrant & Co

Macheten für den Testdschungel
Macheten für den TestdschungelMacheten für den Testdschungel
Macheten für den TestdschungelChristian Heger
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker ContainerAndreas Koop
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrGunther Pippèrr
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdataHenning Blohm
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Torben Knerr
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Alex Sili
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3Ralf Eggert
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentationbneselov
 
Consumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein ÜberblickConsumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein Überblicktobiasflohre
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveKlaus Bild
 
Zuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionZuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionTorben Knerr
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampWerner Keil
 
German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension Ulrich Gerkmann-Bartels
 
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektOPITZ CONSULTING Deutschland
 
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...Beck et al. GmbH
 
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...NETWAYS
 

Similar to Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vagrant & Co (20)

Macheten für den Testdschungel
Macheten für den TestdschungelMacheten für den Testdschungel
Macheten für den Testdschungel
 
WebLogic im Docker Container
WebLogic im Docker ContainerWebLogic im Docker Container
WebLogic im Docker Container
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperrOracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
Oracle oem 12c_plugin_development-doag-konferenz_11_2014_print_gunther_pipperr
 
130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata130605 buildfrei skalieren_fuer_bigdata
130605 buildfrei skalieren_fuer_bigdata
 
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
Automatisierte Entwickler VMs -- "works on my machine" zählt nicht mehr ;-)
 
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
Legacy-Software-Refactoring - Zielsetzungen für ein erfolgreiches Refactoring...
 
Migration zum Zend Framework 3
Migration zum Zend Framework 3Migration zum Zend Framework 3
Migration zum Zend Framework 3
 
Vagrant
VagrantVagrant
Vagrant
 
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
2014 borys neselovskyi_web_logic_server_auf_oda_praesentation
 
Consumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein ÜberblickConsumer- Driven Contract Testing - ein Überblick
Consumer- Driven Contract Testing - ein Überblick
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
AdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep DiveAdminCamp 14 - IBM Connections Deep Dive
AdminCamp 14 - IBM Connections Deep Dive
 
Zuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible sessionZuehlke Camp 2017: Chef vs Ansible session
Zuehlke Camp 2017: Chef vs Ansible session
 
DevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCampDevOps der Triple-E Klasse - Eclipse DemoCamp
DevOps der Triple-E Klasse - Eclipse DemoCamp
 
German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension German ADF News Session: JDev 11gR2 Extension
German ADF News Session: JDev 11gR2 Extension
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem KundenprojektWebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
WebLogic Server auf ODA: Erfahrungen aus einem Kundenprojekt
 
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...
Flexible Workplace-Environments aus der Cloud Webinar (3) der BeaS AWS Cloud ...
 
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...
Nagios Conference 2007 | Datenbankgestützte Konfiguration von Nagios in große...
 

Zu viele Köche verderben den Brei - Kochschule für Devs und Ops mit Chef, Vagrant & Co

  • 1. © Zühlke 2012 Torben Knerr, Klaus Alfert Zu viele Köche verderben den Brei… Kochschule für Devs und Ops mit Chef, Vagrant & Co 22. Januar 2013 Folie 1
  • 2. © Zühlke 2012 Ein typisches Java Projekt: • Web Applikation • Datenbank • Memcached • Nginx • GeoServer Cluster und Failover sind natürlich auch gefordert! Unser letztes Projekt… DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Nginx Memcached Tomcat Tomcat DB Master DB Slave GeoServer App 22. Januar 2013 Folie 2
  • 3. © Zühlke 2012 Unser letztes Projekt… Mit einer typischen Deployment Pipeline: DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Lokal DEV TEST PROD 22. Januar 2013 Folie 3
  • 4. © Zühlke 2012 Unser letztes Projekt… Und typischen Problemen: • Alle Umgebungen sind unterschiedlich • Keiner kennt die Unterschiede so richtig • Neue Entwickler brauchen 3 Tage bis die Umgebung lokal läuft • Komplexere Szenarien sind lokal nicht testbar • Lange Feedback-Zyklen in „shared“ Umgebungen (DEV) • Unterschiedliche Ansprechpartner für Netz / OS / DB /… • Und wie immer… DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 4
  • 5.
  • 6. © Zühlke 2012 Ein erster Lösungsansatz: Hey, wir bauen VMs! Das hilft schon mal weiter: • Vorbereitete VMs für die Entwickler mit Tomcat, Datenbank, Nginx, etc… • Mit viel Liebe von Hand gefertigt • Das Standardvorgehen bei unseren Embedded-Kollegen DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013
  • 7. © Zühlke 2012 Ein erster Lösungsansatz: Hey, wir bauen VMs! Aber… • Manuelles Management von VMs ist schwierig (oder zumindest lästig) • Prozesstreue ist von großer Bedeutung • Wie versioniert man eigentlich eine 40GB große VM? In Subversion? • Funktioniert lokal auf Entwickler PCs, aber unpassend für zentrale Infrastruktur • Wie parametriert man solche VMs? Fazit: hilft, aber geht nicht weit genug! DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 7
  • 8. © Zühlke 2012 Warum Scripting? • Leichtgewichtige Skripte statt fetter VMs – Infrastruktur kann versioniert werden • Umgebungen können reproduzierbar aufgesetzt werden – Möglichst wenig manuelle Tätigkeiten – Ausgangsbasis für „saubere“ Deployments • Umgebungen werden explizit designed – Entstehen nicht zufällig – Werden explizit als ausführbare Spezifikation beschrieben Wir haben Kontrolle über unsere Umgebung! Unsere Lösung: Wir skripten VMs! DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 8
  • 9. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Willkommen in der DevOps Küche! Infrastruktur á la Carte 22. Januar 2013 Folie 9
  • 10. © Zühlke 2012 Ziel: einfache Infrastruktur automatisiert aufsetzen • Zum Beispiel auf dem Entwickler PC • Separate VM für App Server und Datenbank • Jederzeit reproduzierbar („clean setup“) Unser Beispiel Szenario DevOps mit Chef & Co | Torben Knerr, Klaus Alfert App Server VM Tomcat Datenbank VM PostgreSQL .war 22. Januar 2013 Folie 10
  • 11. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 1: Wir brauchen VMs 22. Januar 2013 Folie 11
  • 12. © Zühlke 2012 Zutat 1: Wir brauchen VMs Enter Vagrant Was ist Vagrant? • Vagrant ist Automatisierung für VirtualBox • Konfiguration der VMs wird in ein Vagrantfile ausgelagert • Einfache Befehle zum steuern der VMs: – vagrant up – vagrant ssh – vagrant halt – … • http://vagrantup.com DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 12
  • 13. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
  • 14. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile Basebox
  • 15. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile App Server VM
  • 16. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile Datenbank VM
  • 17. Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant vagrant up
  • 18. Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant vagrant ssh
  • 19. © Zühlke 2012 Zutat 1: Wir brauchen VMs Ein Blick in die VirtualBox GUI DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Ist das die App Server VM? Oder doch die Datenbank VM? 22. Januar 2013 Folie 19
  • 20. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
  • 21. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
  • 22. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail Name, CPUs, RAM, etc…
  • 23. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail vagrant reload
  • 24. © Zühlke 2012 Zutat 1: Wir brauchen VMs Kontrolle in der VirtualBox GUI DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Folie 24 und die VM Parameter stimmen auch! Besser!
  • 25. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 2: Provisionierung 22. Januar 2013 Folie 25
  • 26. © Zühlke 2012 Zutat 2: Provisionierung Zurück zu unserem Szenario Nackte VMs reichen nicht • Auf der DB-VM brauchen wir eine Datenbank z.B. PostgreSQL • Auf dem App-VM brauchen wir einen Tomcat Installation und Konfiguration dieser Software kann Chef übernehmen! 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 26
  • 27. © Zühlke 2012 Zutat 2: Provisionierung Enter Chef Was ist Chef? • Chef ist Konfigurationsmanagement für Infrastruktur • Installiert & konfiguriert Systeme von Grund auf • Bietet eine DSL um Infrastruktur auf einer angemessenen Abstraktionsebene zu beschreiben Mehr dazu: • http://www.opscode.com/chef/ Vagrant unterstützt die Provisionierung von VMs via Chef! 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 27
  • 28. Zutat 2: Provisionierung – PostgreSQL installieren
  • 29. Zutat 2: Provisionierung – PostgreSQL installieren Stelle den PostgreSQL Server bereit
  • 30. Zutat 2: Provisionierung – PostgreSQL installieren Spezifische Konfiguration
  • 32. Was steht im PostgreSQL Rezept?
  • 33.
  • 37. Erzeuge die andere Konfig-Datei
  • 39. Der Server ist auch selbst ein Client!
  • 40.
  • 41. Zutat 2: Provisionierung – das gleiche mit Tomcat…
  • 42. Zutat 2: Provisionierung – das gleiche mit Tomcat… Stelle den Tomcat bereit
  • 43. Zutat 2: Provisionierung – das gleiche mit Tomcat… Tomcat Konfiguration
  • 45. © Zühlke 2012 Die Philosophie von Chef Spezifikation des Zielzustandes • Idempotenz • „Selbstheilung“ DSL abstrahiert von systemspezifischen Details • Resourcen • Provider für das jeweilige System Küche als Namensgeber • Chef, Cookbook, Recipe, Knife, … 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 45
  • 46. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 3: Kochbuchverwaltung 22. Januar 2013 Folie 46
  • 47. © Zühlke 2012 Zutat 3: Kochbuchverwaltung Zurück zu unserem Szenario 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Woher kommt eigentlich das PostgreSQL Kochbuch / Rezept ??? Folie 47
  • 48. © Zühlke 2012 Zutat 3: Kochbuchverwaltung Hier findet man Kochbücher! 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert http://community.opscode.com/cookbooks/ https://github.com/search?q=cookbook Folie 48
  • 49. © Zühlke 2012 Zutat 3: Kochbuchverwaltung Enter Librarian Was ist Librarian? • Librarian bietet Dependency Management für Cookbooks • Automatisiertes herunterladen und extrahieren Abhängigkeiten werden in einem Cheffile spezifiziert • Transitive Abhängigkeiten werden mit aufgelöst • Unter Berücksichtigung von Quellen und Versionen Mehr dazu • https://github.com/applicationsonline/librarian 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 49
  • 50. © Zühlke 2012 Zutat 3: Kochbuchverwaltung Ein einfaches Cheffile Cheffile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 50
  • 51. Zutat 3: Kochbuchverwaltung – ein einfaches Cheffile Librarian „installiert“ die Kochbücher
  • 52. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 4: Eigene Kochbücher 22. Januar 2013 Folie 52
  • 53. © Zühlke 2012 Zutat 4: Eigene Kochbücher Zurück zu unserem Szenario VMs mit Infrastruktur reichen nicht • Wir brauchen ein DB-Schema und eine DB-User für unsere Anwendung • Das WAR-File für unsere Anwendung muss im Tomcat deployed werden Dafür gibt es kein wiederverwendbares Kochbuch, das wir einfach nutzen können! 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 53
  • 54. © Zühlke 2012 Mit Knife kann man Kochbücher erstellen 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 54 Zutat 4: Eigene Kochbücher Enter Knife
  • 55. © Zühlke 2012 Zutat 4: Eigene Kochbücher Die Struktur des myapp Kochbuchs Ein Kochbuch, aber mit separaten Rezepten um die Datenbank und Webapp aufzusetzen 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 55 myapp attributes recipes db.rb web.rb db.rb default.rb web.rb
  • 56. © Zühlke 2012 Zutat 4: Eigene Kochbücher Die Struktur des myapp Kochbuchs In den Attributen werden Default-Werte definiert 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert myapp attributes recipes db.rb web.rb db.rb default.rb web.rb Folie 56
  • 57. © Zühlke 2012 Zutat 4: Eigene Kochbücher Die Struktur des myapp Kochbuchs • myapp/attributes/db.rb • myapp/attributes/web.rb 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 57
  • 58. © Zühlke 2012 Zutat 4: Eigene Kochbücher Die Struktur des myapp Kochbuchs Im „db“ Rezept wird PostgreSQL installiert, dann die Datenbank und der DB User angelegt 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert myapp attributes recipes db.rb web.rb db.rb default.rb web.rb Folie 58
  • 59.
  • 60. Ohne PostgreSQL macht es keinen Sinn
  • 62. Zuerst den User anlegen
  • 64. © Zühlke 2012 Zutat 4: Eigene Kochbücher Im Vagrantfile myapp::db anwenden Vagrantfile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 64
  • 65. © Zühlke 2012 Zutat 4: Eigene Kochbücher Im Vagrantfile myapp::db anwenden Vagrantfile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Statt postgresql::server Folie 65
  • 67. © Zühlke 2012 Zutat 4: Eigene Kochbücher Erweitertes Cheffile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 67
  • 68. © Zühlke 2012 Zutat 4: Eigene Kochbücher Die Struktur des myapp Kochbuchs Im „web“ Rezept wird Tomcat installiert, die Webapp konfiguriert und im Tomcat deployed 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert myapp attributes recipes db.rb web.rb db.rb default.rb web.rb Folie 68
  • 69.
  • 70. Wir müssen Tomcat installieren
  • 71. Hier liegt unser .war File
  • 74. © Zühlke 2012 Zutat 4: Eigene Kochbücher Im Vagrantfile myapp::web anwenden Vagrantfile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 74
  • 75. © Zühlke 2012 Zutat 4: Eigene Kochbücher Im Vagrantfile myapp::web anwenden Vagrantfile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 75 Statt dem tomcat Rezept
  • 76. © Zühlke 2012 Zutat 4: Eigene Kochbücher Im Vagrantfile myapp::web anwenden Vagrantfile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert C Folie 76 Hier läuft die Datenbank
  • 79. Oder was auch immer gerade ist… Wir haben das Yabe Beispiel vom Play! Framework benutzt: http://www.playframework.org/documentation/1.0/samples
  • 80. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Die DevOps-Küche 22. Januar 2013 Folie 80
  • 81. © Zühlke 2012 Rekapitulation: Was haben wir bisher gemacht DevOps mit Chef & Co | Torben Knerr, Klaus Alfert 22. Januar 2013 Zutat 1 Wir brauchen VMs Zutat 2 Provisionierung Zutat 3 Kochbuchverwaltung Zutat 4 Eigene Kochbücher + Folie 81 + +
  • 82. © Zühlke 2012 Textuelle Spezifikation der Infrastruktur • Keine Shell-Skripte, sondern Spezifikation des Zielzustandes • Knackig kurz, aber nicht kryptisch • SCM-freundlich: Kilobyte statt Gigabyte • Komplexe Infrastruktur steht auf Knopfdruck bereit • Immer wieder ausführbar und wiederholbar • Wiederverwendbarkeit auf Infrastrukturebene Was haben wir erreicht? 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 82
  • 83. © Zühlke 2012 Wir haben nur an der Oberfläche geraspelt Chef & Vagrant bieten noch sehr viel mehr • Provisionierung in der Cloud oder ihrer Virtualisierungsumgebung • Erweiterungsmöglichkeiten der DSL dank Ruby – Eigene Resourcen und Provider – Programmierung innerhalb der Rezepte • Chef-Server – Rechte-Management – Search – Environments Eine populäre Alternative zu Chef ist Puppet. • Bietet einen reinen DSL-Ansatz ohne Ruby. 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 83
  • 84. © Zühlke 2012 Wenn Infrastruktur Code ist, dann muss Infrastruktur auch getestet werden! DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Lint Checking • foodcritic Unit-Level Testing • chefspec • fauxhai Smoke Tests (von Innen) • chef-minitest-handler Acceptance Testing (von Außen) • cucumber-nagios 22. Januar 2013 Folie 84
  • 85.
  • 86. Dr. Klaus Alfert Email: klaus.alfert@zuehlke.com http://xing.to/alfert Torben Knerr Email: torben.knerr@zuehlke.com http://xing.to/tknerr Guten Appetit! Folien: http://bit.ly/z_slideshare Beispiele: https://github.com/tknerr/oop-chef-demo