Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Serverprovisioning in einer dynamischen Infrastruktur
1. Serverprovisioning in einer dynamischen Infrastruktur
Systemmanagement
LinuxTag 2012
vorgestellt am 23.05.2012
Alexander Pacnik
inovex GmbH
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
2. Einleitung
... was wollen wir erreichen?
Ziele beim Einsatz von Tools
• Automatisierung
• Transparenz & Nachvollziehbarkeit
• KISS
• Ein Tool ist ein Werkzeug
24.05.12 2
6. Konfigurationsverwaltung
... Puppet
Maß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 aufbauen
24.05.12 6
8. Konfigurationsverwaltung
... Puppet Best Practices
Puppet Environments
• Verschiedene Environments für Umgebungen und Entwickler
[production]
modulepath = $repo/services:$repo/modules
manifest = $repo/manifests/production_environment.pp
24.05.12 8
9. Konfigurationsverwaltung
... Puppet Best Practices
Puppet Environments
• Verschiedene Environments für Umgebungen und Entwickler
[production]
modulepath = $repo/services:$repo/modules
manifest = $repo/manifests/production_environment.pp
[john_doe]
modulepath = $repo/john_doe:$repo/services:$repo/modules
24.05.12 9
10. Konfigurationsverwaltung
... Puppet Best Practices
Modularisierung
• mehrstufiges Vorgehen
• Basismodule so atomar wie möglich
• Servicemodule die den eigentlichen Dienst beschreiben
• Benötigte Module in der Node-Definition zusammenführen
24.05.12 10
11. Konfigurationsverwaltung
... Puppet Best Practices
Beispiel: JBoss-Modul
class jboss {
define service ( $wrapper={} ) {
# Einmalig Pakete installieren
require jboss::server
# Weitere Aktionen
}
}
24.05.12 11
12. Konfigurationsverwaltung
... Puppet Best Practices
Beispiel: JBoss-Modul
class jboss {
define service ( $wrapper={} ) {
# Einmalig Pakete installieren
require jboss::server
# Weitere Aktionen
}
}
24.05.12 12
17. Paketverwaltung
... die Welt ist ein Paket
Ziele
• schnelle und konsistente Verteilung
• Integrität gewährleisten
• einfache Anwendung und Integration in die Buildumgebung
• Optional: Abhängigkeiten verwalten
24.05.12 17
18. Paketverwaltung
... die Welt ist ein Paket
Ruby Version Manager (RVM)
• Verwaltet getrennte Ruby Versionen, Gem Sets etc.
Package Management mit FPM
• Ruby Tool zum erstellen von Paketen
24.05.12 18
24. Server-Orchestration
... Server remote steuern
Ziele
• Fehlertoleranz
• Nachvollziebarkeit
Maßnahmen
• Notwendige Aufgaben Skripten (nicht lokal auf den Servern arbeiten)
• Skripte in einem VCS verwalten
• Vernünftiges Logging implementieren
24.05.12 24
28. Jenkins
... der automatisierte Buildprozess
Was ist Jenkins?
• Continuous Integration Server
Vorteile
• 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. The Foreman
... Puppet Verwaltung und mehr
Was ist The Foreman?
• Tool zur Serververwaltung
24.05.12 29
30. The Foreman
... Puppet Verwaltung und mehr
Was 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 wird
24.05.12 30
31. Geppetto
... die Puppet IDE
Was ist Geppetto?
• IDE zur Puppet Entwicklung auf Basis von Eclipse
Vorteile
• Syntax Highlighting
• Code-Verfollständigung
24.05.12 31
32. Fragen?
Configure Build Manage Develop
Zustand Pakete Zugriff Transparenz
Puppet FPM Rex VCS
The Foreman Jenkins Geppetto
24.05.12 32
33. Vielen Dank für Ihre Aufmerksamkeit!
inovex GmbH
Pforzheim München Köln
Karlsruher Straße 71 Valentin-Linhof-Straße 2 Kaiser-Wilhelm-Ring 27-29
D-75179 Pforzheim D-81829 München D-50672 Köln
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.
34. Quellen
... wo sie in Ruhe nachlesen können
Quellen
• 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.org
Lizenz
• Creative Commons - by-nc-nd
24.05.12 34