Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

Chef, Knife, Vagrant und Co dürfen in keiner modernen DevOps Küche fehlen. Diese Werkzeuge sowie die Kernkonzepte von Chef sind die Hauptzutaten für unseren Vortrag. Anhand unserer Projekterfahrungen zeigen wir Ihnen wie Sie bestehende Rezepte aus der Community verwenden und nach Ihrem Geschmack verfeinern. Damit haben Sie das grundlegende Handwerkszeug, um ganze Systemlandschaften per Knopfdruck verlässlich und reproduzierbar aufzusetzen - sei es in der Cloud, in Ihrer eigenen Testumgebung, oder auf dem Entwickler-PC. Happy Cooking!

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

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

  1. 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. 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. 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. 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. 5. © 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
  6. 6. © 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
  7. 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
  8. 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
  9. 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
  10. 10. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 1: Wir brauchen VMs 22. Januar 2013 Folie 11
  11. 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
  12. 12. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile
  13. 13. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile Basebox
  14. 14. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile App Server VM
  15. 15. Zutat 1: Wir brauchen VMs – ein einfaches Vagrantfile Datenbank VM
  16. 16. Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant vagrant up
  17. 17. Zutat 1: Wir brauchen VMs – Interaktion mit Vagrant vagrant ssh
  18. 18. © 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
  19. 19. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
  20. 20. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail
  21. 21. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail Name, CPUs, RAM, etc…
  22. 22. Zutat 1: Wir brauchen VMs – VM Konfiguration im Detail vagrant reload
  23. 23. © 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!
  24. 24. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 2: Provisionierung 22. Januar 2013 Folie 25
  25. 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
  26. 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
  27. 27. Zutat 2: Provisionierung – PostgreSQL installieren
  28. 28. Zutat 2: Provisionierung – PostgreSQL installieren Stelle den PostgreSQL Server bereit
  29. 29. Zutat 2: Provisionierung – PostgreSQL installieren Spezifische Konfiguration
  30. 30. vagrant up db
  31. 31. Was steht im PostgreSQL Rezept?
  32. 32. Installiere das Package
  33. 33. Erzeuge die Konfig-Datei
  34. 34. Erzeuge die Konfig-Datei
  35. 35. Erzeuge die andere Konfig-Datei
  36. 36. Starte PostgreSQL als Service
  37. 37. Der Server ist auch selbst ein Client!
  38. 38. Zutat 2: Provisionierung – das gleiche mit Tomcat…
  39. 39. Zutat 2: Provisionierung – das gleiche mit Tomcat… Stelle den Tomcat bereit
  40. 40. Zutat 2: Provisionierung – das gleiche mit Tomcat… Tomcat Konfiguration
  41. 41. vagrant up web
  42. 42. © 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
  43. 43. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 3: Kochbuchverwaltung 22. Januar 2013 Folie 46
  44. 44. © 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
  45. 45. © 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
  46. 46. © 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
  47. 47. © Zühlke 2012 Zutat 3: Kochbuchverwaltung Ein einfaches Cheffile Cheffile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 50
  48. 48. Zutat 3: Kochbuchverwaltung – ein einfaches Cheffile Librarian „installiert“ die Kochbücher
  49. 49. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Zutat 4: Eigene Kochbücher 22. Januar 2013 Folie 52
  50. 50. © 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
  51. 51. © 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
  52. 52. © 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
  53. 53. © 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
  54. 54. © 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
  55. 55. © 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
  56. 56. Ohne PostgreSQL macht es keinen Sinn
  57. 57. Hilfreiche Resourcen dazunehmen
  58. 58. Zuerst den User anlegen
  59. 59. Die Datenbank erzeugen
  60. 60. © 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
  61. 61. © 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
  62. 62. vagrant provision db
  63. 63. © Zühlke 2012 Zutat 4: Eigene Kochbücher Erweitertes Cheffile 22. Januar 2013DevOps mit Chef & Co | Torben Knerr, Klaus Alfert Folie 67
  64. 64. © 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
  65. 65. Wir müssen Tomcat installieren
  66. 66. Hier liegt unser .war File
  67. 67. Datenbankkonfiguration
  68. 68. Applikation in Tomcat deployen
  69. 69. © 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
  70. 70. © 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
  71. 71. © 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
  72. 72. vagrant provision web
  73. 73. Läuft unsere Anwendung denn nun?
  74. 74. Oder was auch immer gerade ist… Wir haben das Yabe Beispiel vom Play! Framework benutzt: http://www.playframework.org/documentation/1.0/samples
  75. 75. © Zühlke 2012 DevOps mit Chef & Co Torben Knerr, Klaus Alfert Die DevOps-Küche 22. Januar 2013 Folie 80
  76. 76. © 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 + +
  77. 77. © 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
  78. 78. © 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
  79. 79. © 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
  80. 80. 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

×