Serverprovisioning in einer dynamischen Infrastruktur         Systemmanagement         LinuxTag 2012vorgestellt am 23.05.2...
Einleitung... was wollen wir erreichen?Ziele beim Einsatz von Tools•    Automatisierung•    Transparenz & Nachvollziehbark...
Einleitung... was bedeutet ServerprovisionierungProvision (Bereitstellung)•    Firmeware•    Virtualisierung•    Betriebss...
Einleitung... was bedeutet ServerprovisionierungProvision (Bereitstellung)•    Firmeware•    Virtualisierung•    Betriebss...
Konfigurationsverwaltung           Configure   Build   Manage   Develop            Zustand            Puppet24.05.12      ...
Konfigurationsverwaltung... PuppetMaßnahmen am Beispiel Puppet•  Konfigurationen werden regelmäßig von den Clients angewen...
Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwic...
Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwic...
Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwic...
Konfigurationsverwaltung... Puppet Best PracticesModularisierung•  mehrstufiges Vorgehen   •  Basismodule so atomar wie mö...
Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modulclass jboss {    define service ( $wrapper={} ) {   ...
Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modulclass jboss {    define service ( $wrapper={} ) {   ...
Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modul anwenden jboss::service {“jboss-01":       wrapper ...
Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modul anwenden jboss::service {“jboss-01":       wrapper ...
Konfigurationsverwaltung... Puppet Best PracticesBeispiel: Templates<%= wrapper.has_key?("jvm_initmemory") ? wrapper[jvm_i...
Paketverwaltung           Configure   Build    Manage   Develop            Zustand    Pakete            Puppet     FPM24.0...
Paketverwaltung... die Welt ist ein PaketZiele•    schnelle und konsistente Verteilung•    Integrität gewährleisten•    ei...
Paketverwaltung... die Welt ist ein PaketRuby Version Manager (RVM)•  Verwaltet getrennte Ruby Versionen, Gem Sets etc.Pac...
Paketverwaltung... als erstes rvm, ruby und fpm installieren# Stabile RVM Version systemweit installieren$ curl -L get.rvm...
Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm u...
Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm u...
Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm u...
Server-Orchestration           Configure   Build    Manage    Develop            Zustand    Pakete   Zugriff            Pu...
Server-Orchestration... Server remote steuernZiele•  Fehlertoleranz•  NachvollziebarkeitMaßnahmen•  Notwendige Aufgaben Sk...
Server-Orchestration... mit Rexdesc "test connection";task "test", group => “portal", sub {   say run "uptime";   say run ...
Das Zusammenspiel... Der verschiedenen Tools           Configure      Build   Manage     Develop            Zustand      P...
Jenkins... der automatisierte BuildprozessWas ist Jenkins?•  Continuous Integration Server24.05.12                        ...
Jenkins... der automatisierte BuildprozessWas ist Jenkins?•  Continuous Integration ServerVorteile•  Integration von Rex• ...
The Foreman... Puppet Verwaltung und mehrWas ist The Foreman?•  Tool zur Serververwaltung24.05.12                         29
The Foreman... Puppet Verwaltung und mehrWas ist The Foreman?•    Puppet Verwaltung und grafische Darstellung•    Systemin...
Geppetto... die Puppet IDEWas ist Geppetto?•  IDE zur Puppet Entwicklung auf Basis von EclipseVorteile•  Syntax Highlighti...
Fragen?           Configure   Build              Manage     Develop            Zustand    Pakete             Zugriff   Tra...
Vielen Dank für Ihre Aufmerksamkeit!inovex GmbHPforzheim                           München                                ...
Quellen... wo sie in Ruhe nachlesen könnenQuellen•  http://www.puppetlabs.com•  https://github.com/rodjek/puppet-lint•  ht...
Nächste SlideShare
Wird geladen in …5
×

Serverprovisioning in einer dynamischen Infrastruktur

527 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
527
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
1
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Serverprovisioning in einer dynamischen Infrastruktur

  1. 1. Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012vorgestellt am 23.05.2012Alexander Pacnikinovex GmbH Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
  2. 2. Einleitung... was wollen wir erreichen?Ziele beim Einsatz von Tools•  Automatisierung•  Transparenz & Nachvollziehbarkeit•  KISS•  Ein Tool ist ein Werkzeug24.05.12 2
  3. 3. Einleitung... was bedeutet ServerprovisionierungProvision (Bereitstellung)•  Firmeware•  Virtualisierung•  Betriebssystem•  Konfigurationen•  Applikationen•  Daten24.05.12 3
  4. 4. Einleitung... was bedeutet ServerprovisionierungProvision (Bereitstellung)•  Firmeware•  Virtualisierung•  Betriebssystem•  Konfigurationen•  Applikationen•  Daten24.05.12 4
  5. 5. Konfigurationsverwaltung Configure Build Manage Develop Zustand Puppet24.05.12 5
  6. 6. Konfigurationsverwaltung... PuppetMaßnahmen am Beispiel Puppet•  Konfigurationen werden regelmäßig von den Clients angewendet•  Konfigurationen in einem zentralen VCS verwalten •  pre-commit: Syntax und Style überprüfen •  post-commit: Code automatisch verteilen•  Puppet Klassen modular aufbauen24.05.12 6
  7. 7. Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwickler24.05.12 7
  8. 8. Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwickler[production]modulepath = $repo/services:$repo/modulesmanifest = $repo/manifests/production_environment.pp24.05.12 8
  9. 9. Konfigurationsverwaltung... Puppet Best PracticesPuppet Environments•  Verschiedene Environments für Umgebungen und Entwickler[production]modulepath = $repo/services:$repo/modulesmanifest = $repo/manifests/production_environment.pp[john_doe]modulepath = $repo/john_doe:$repo/services:$repo/modules24.05.12 9
  10. 10. Konfigurationsverwaltung... Puppet Best PracticesModularisierung•  mehrstufiges Vorgehen •  Basismodule so atomar wie möglich •  Servicemodule die den eigentlichen Dienst beschreiben •  Benötigte Module in der Node-Definition zusammenführen24.05.12 10
  11. 11. Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modulclass jboss { define service ( $wrapper={} ) { # Einmalig Pakete installieren require jboss::server # Weitere Aktionen }}24.05.12 11
  12. 12. Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modulclass jboss { define service ( $wrapper={} ) { # Einmalig Pakete installieren require jboss::server # Weitere Aktionen }}24.05.12 12
  13. 13. Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modul anwenden jboss::service {“jboss-01": wrapper => { # Allgemeine Einstellungen instance_dir => "/var/lib/my-jboss", # JVM Einstellungen jvm_maxpermsize => "64m", jvm_initmemory => "128m", jvm_maxmemory => "512m", # [ ... ]24.05.12 13
  14. 14. Konfigurationsverwaltung... Puppet Best PracticesBeispiel: JBoss-Modul anwenden jboss::service {“jboss-01": wrapper => { # Allgemeine Einstellungen instance_dir => "/var/lib/my-jboss", # JVM Einstellungen jvm_maxpermsize => "64m", jvm_initmemory => "128m", jvm_maxmemory => "512m", # [ ... ]24.05.12 14
  15. 15. Konfigurationsverwaltung... Puppet Best PracticesBeispiel: Templates<%= wrapper.has_key?("jvm_initmemory") ? wrapper[jvm_initmemory] : 128 %>24.05.12 15
  16. 16. Paketverwaltung Configure Build Manage Develop Zustand Pakete Puppet FPM24.05.12 16
  17. 17. Paketverwaltung... die Welt ist ein PaketZiele•  schnelle und konsistente Verteilung•  Integrität gewährleisten•  einfache Anwendung und Integration in die Buildumgebung•  Optional: Abhängigkeiten verwalten24.05.12 17
  18. 18. Paketverwaltung... die Welt ist ein PaketRuby Version Manager (RVM)•  Verwaltet getrennte Ruby Versionen, Gem Sets etc.Package Management mit FPM•  Ruby Tool zum erstellen von Paketen24.05.12 18
  19. 19. Paketverwaltung... als erstes rvm, ruby und fpm installieren# Stabile RVM Version systemweit installieren$ curl -L get.rvm.io | sudo bash -s stable# RVM Environment laden$ source /usr/local/rvm/scripts/rvm# Build-Anforderungen anzeigen$ rvm requirements# Ruby bauen$ rvmsudo rvm install 1.9.1-p431# FPM als Gem systemweit installieren$ rvmsudo rvm all do gem install fpm24.05.12 19
  20. 20. Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm use ruby-1.9.1-p43124.05.12 20
  21. 21. Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm use ruby-1.9.1-p431# Paket erstellen$ fpm -s dir -t deb -a x86_64 -n apache-tomcat-6.0.35 -v 6.0.35 -d openjdk-6-jre --description "Apache Tomcat Application Server" --prefix /usr/share/tomcat/6.0.35 -C /tmp/tmp.J2yIc34ECN bin/{tomcat-juli.jar,bootstrap.jar} lib24.05.12 21
  22. 22. Paketverwaltung... als nächstes die Pakete erstellen# Ruby Environment auswählen$ source /usr/local/rvm/scripts/rvm$ rvm use ruby-1.9.1-p431# Paket erstellen$ fpm -s dir -t deb -a x86_64 -n apache-tomcat-6.0.35 -v 6.0.35 -d openjdk-6-jre --description "Apache Tomcat Application Server" --prefix /usr/share/tomcat/6.0.35 -C /tmp/tmp.J2yIc34ECN bin/{tomcat-juli.jar,bootstrap.jar} libErgebnis: apache-tomcat-6.0.35_6.0.35_amd64.deb24.05.12 22
  23. 23. Server-Orchestration Configure Build Manage Develop Zustand Pakete Zugriff Puppet FPM Rex24.05.12 23
  24. 24. Server-Orchestration... Server remote steuernZiele•  Fehlertoleranz•  NachvollziebarkeitMaßnahmen•  Notwendige Aufgaben Skripten (nicht lokal auf den Servern arbeiten)•  Skripte in einem VCS verwalten•  Vernünftiges Logging implementieren24.05.12 24
  25. 25. Server-Orchestration... mit Rexdesc "test connection";task "test", group => “portal", sub { say run "uptime"; say run "hostname";};24.05.12 25
  26. 26. Das Zusammenspiel... Der verschiedenen Tools Configure Build Manage Develop Zustand Pakete Zugriff Transparenz Puppet FPM Rex VCS24.05.12 26
  27. 27. Jenkins... der automatisierte BuildprozessWas ist Jenkins?•  Continuous Integration Server24.05.12 27
  28. 28. Jenkins... der automatisierte BuildprozessWas ist Jenkins?•  Continuous Integration ServerVorteile•  Integration von Rex•  Integration von fpm•  Zentrale Steuerung des Buildprozesses•  Viele Plugins verfügbar, z.B. für die Integration verschiedener Tools (z.B. xtrigger)24.05.12 28
  29. 29. The Foreman... Puppet Verwaltung und mehrWas ist The Foreman?•  Tool zur Serververwaltung24.05.12 29
  30. 30. The Foreman... Puppet Verwaltung und mehrWas ist The Foreman?•  Puppet Verwaltung und grafische Darstellung•  Systeminventarisierung (Facter, Reports)•  Grafische Übersichten zum aktuellen Status•  Optional: Verwaltung der Infrastruktur (DNS, DHCP, TFTP) die für die Installation ab dem Betriebssystem benötigt wird24.05.12 30
  31. 31. Geppetto... die Puppet IDEWas ist Geppetto?•  IDE zur Puppet Entwicklung auf Basis von EclipseVorteile•  Syntax Highlighting•  Code-Verfollständigung24.05.12 31
  32. 32. Fragen? Configure Build Manage Develop Zustand Pakete Zugriff Transparenz Puppet FPM Rex VCS The Foreman Jenkins Geppetto24.05.12 32
  33. 33. Vielen Dank für Ihre Aufmerksamkeit!inovex GmbHPforzheim München KölnKarlsruher Straße 71 Valentin-Linhof-Straße 2 Kaiser-Wilhelm-Ring 27-29D-75179 Pforzheim D-81829 München D-50672 Köln Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
  34. 34. Quellen... wo sie in Ruhe nachlesen könnenQuellen•  http://www.puppetlabs.com•  https://github.com/rodjek/puppet-lint•  https://www.rvm.io•  https://github.com/jordansissel/fpm•  http://rexify.org•  http://cloudsmith.github.com/geppetto•  http://jenkins-ci.org•  http://theforeman.orgLizenz•  Creative Commons - by-nc-nd24.05.12 34

×