SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
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.
Einleitung
... was wollen wir erreichen?




Ziele beim Einsatz von Tools

•    Automatisierung
•    Transparenz & Nachvollziehbarkeit
•    KISS
•    Ein Tool ist ein Werkzeug




24.05.12                                 2
Einleitung
... was bedeutet Serverprovisionierung




Provision (Bereitstellung)

•    Firmeware
•    Virtualisierung
•    Betriebssystem
•    Konfigurationen
•    Applikationen
•    Daten




24.05.12                                 3
Einleitung
... was bedeutet Serverprovisionierung




Provision (Bereitstellung)

•    Firmeware
•    Virtualisierung
•    Betriebssystem
•    Konfigurationen
•    Applikationen
•    Daten




24.05.12                                 4
Konfigurationsverwaltung




           Configure   Build   Manage   Develop


            Zustand

            Puppet




24.05.12                                          5
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
Konfigurationsverwaltung
... Puppet Best Practices




Puppet Environments

•  Verschiedene Environments für Umgebungen und Entwickler




24.05.12                                                     7
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
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
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
Konfigurationsverwaltung
... Puppet Best Practices

Beispiel: JBoss-Modul

class jboss {

    define service ( $wrapper={} ) {

        # Einmalig Pakete installieren
        require jboss::server

        # Weitere Aktionen

    }

}



24.05.12                                 11
Konfigurationsverwaltung
... Puppet Best Practices

Beispiel: JBoss-Modul

class jboss {

    define service ( $wrapper={} ) {

        # Einmalig Pakete installieren
        require jboss::server

        # Weitere Aktionen

    }

}



24.05.12                                 12
Konfigurationsverwaltung
... Puppet Best Practices

Beispiel: 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
Konfigurationsverwaltung
... Puppet Best Practices

Beispiel: 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
Konfigurationsverwaltung
... Puppet Best Practices




Beispiel: Templates

<%= wrapper.has_key?("jvm_initmemory") ? wrapper['jvm_initmemory'] : '128' %>




24.05.12                                                                    15
Paketverwaltung




           Configure   Build    Manage   Develop


            Zustand    Pakete

            Puppet     FPM




24.05.12                                           16
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
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
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 fpm

24.05.12                                        19
Paketverwaltung
... als nächstes die Pakete erstellen


# Ruby Environment auswählen
$ source /usr/local/rvm/scripts/rvm
$ rvm use ruby-1.9.1-p431




24.05.12                                20
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} lib




24.05.12                                                         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} lib

Ergebnis: apache-tomcat-6.0.35_6.0.35_amd64.deb

24.05.12                                                         22
Server-Orchestration




           Configure   Build    Manage    Develop


            Zustand    Pakete   Zugriff

            Puppet     FPM       Rex




24.05.12                                            23
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
Server-Orchestration
... mit Rex

desc "test connection";
task "test", group => “portal", sub {
   say run "uptime";
   say run "hostname";
};




24.05.12                                25
Das Zusammenspiel
... Der verschiedenen Tools




           Configure      Build   Manage     Develop


            Zustand      Pakete   Zugriff   Transparenz

            Puppet        FPM      Rex         VCS




24.05.12                                                  26
Jenkins
... der automatisierte Buildprozess

Was ist Jenkins?
•  Continuous Integration Server




24.05.12                              27
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
The Foreman
... Puppet Verwaltung und mehr



Was ist The Foreman?

•  Tool zur Serververwaltung




24.05.12                         29
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
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
Fragen?




           Configure   Build              Manage     Develop


            Zustand    Pakete             Zugriff   Transparenz

            Puppet     FPM                 Rex         VCS

      The Foreman               Jenkins              Geppetto




24.05.12                                                          32
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.
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

Más contenido relacionado

La actualidad más candente

Synology DSM 6.0 - Features und Erfahrungsbericht
Synology DSM 6.0 - Features und ErfahrungsberichtSynology DSM 6.0 - Features und Erfahrungsbericht
Synology DSM 6.0 - Features und ErfahrungsberichtThomas-Krenn.AG
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...NETWAYS
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen B1 Systems GmbH
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedRené Winkelmeyer
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishSpeedPartner GmbH
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtOPITZ CONSULTING Deutschland
 
Powerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesSascha Hameister
 
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...NETWAYS
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA'sFromDual GmbH
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositoriesinovex GmbH
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Chris Michael Klinger
 
OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?Roman Roelofsen
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationFromDual GmbH
 

La actualidad más candente (20)

Synology DSM 6.0 - Features und Erfahrungsbericht
Synology DSM 6.0 - Features und ErfahrungsberichtSynology DSM 6.0 - Features und Erfahrungsbericht
Synology DSM 6.0 - Features und Erfahrungsbericht
 
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
OSMC 2011 | Collectd in der großen weiten Welt - Anbindung des Datensammlers ...
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen Docker - Automatisches Deployment für Linux-Instanzen
Docker - Automatisches Deployment für Linux-Instanzen
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
EntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloadedEntwicklerCamp 2014 - DOTS reloaded
EntwicklerCamp 2014 - DOTS reloaded
 
Web-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnishWeb-Performance-Optimierung mit varnish
Web-Performance-Optimierung mit varnish
 
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan ScheidtAutomatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
Automatischer Build mit Maven - OPITZ CONSULTING - Stefan Scheidt
 
Powerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-FeaturesPowerful mostly unknown Javascript-Features
Powerful mostly unknown Javascript-Features
 
Einführung Maven
Einführung MavenEinführung Maven
Einführung Maven
 
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...
OSMC 2015: Nagios3 /Icinga 2 Anbindung an OPSI by Detlef Krummel und Erol Ülü...
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
 
Puppet: Designing modules & repositories
Puppet: Designing modules & repositoriesPuppet: Designing modules & repositories
Puppet: Designing modules & repositories
 
Docker Workbench
Docker WorkbenchDocker Workbench
Docker Workbench
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)Introduction to Apache Maven 3 (German)
Introduction to Apache Maven 3 (German)
 
OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?OSGi Release 4.2 - Was ist neu?
OSGi Release 4.2 - Was ist neu?
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
 

Destacado

FastCGI Process Manager
FastCGI Process ManagerFastCGI Process Manager
FastCGI Process ManagerMayflower GmbH
 
turbocharge your php with nginx - errazudin - phpnw2010
turbocharge your php with nginx - errazudin - phpnw2010turbocharge your php with nginx - errazudin - phpnw2010
turbocharge your php with nginx - errazudin - phpnw2010Errazudin Ishak
 
appserver.io - Präsentation auf den code.talks 2014
appserver.io - Präsentation auf den code.talks 2014appserver.io - Präsentation auf den code.talks 2014
appserver.io - Präsentation auf den code.talks 2014TechDivision GmbH
 
Biosoja 2011
Biosoja 2011Biosoja 2011
Biosoja 2011galetto
 
A passagem do virtual para o real
A passagem do virtual para o realA passagem do virtual para o real
A passagem do virtual para o realpietra bravo
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pedvin_marcelo
 
El perfil del hombre y la cultura en México.
El perfil del hombre y la cultura en México.El perfil del hombre y la cultura en México.
El perfil del hombre y la cultura en México.Escritura Creativa
 
Ranking "250 Mejores Masters" - El Mundo 2015
Ranking "250 Mejores Masters" - El Mundo 2015Ranking "250 Mejores Masters" - El Mundo 2015
Ranking "250 Mejores Masters" - El Mundo 2015EAE Business School
 
Thoughts behind Cubie Messenger
Thoughts behind Cubie MessengerThoughts behind Cubie Messenger
Thoughts behind Cubie MessengerYenwen Feng
 
Lokale Suche & Google+ Local - Die erfolgreichsten SEO-Strategien
Lokale Suche & Google+ Local - Die erfolgreichsten  SEO-Strategien Lokale Suche & Google+ Local - Die erfolgreichsten  SEO-Strategien
Lokale Suche & Google+ Local - Die erfolgreichsten SEO-Strategien KennstDuEinen GmbH
 
Investigacion de operaciones
Investigacion de operaciones Investigacion de operaciones
Investigacion de operaciones David Soriano
 

Destacado (17)

FastCGI Process Manager
FastCGI Process ManagerFastCGI Process Manager
FastCGI Process Manager
 
turbocharge your php with nginx - errazudin - phpnw2010
turbocharge your php with nginx - errazudin - phpnw2010turbocharge your php with nginx - errazudin - phpnw2010
turbocharge your php with nginx - errazudin - phpnw2010
 
appserver.io - Präsentation auf den code.talks 2014
appserver.io - Präsentation auf den code.talks 2014appserver.io - Präsentation auf den code.talks 2014
appserver.io - Präsentation auf den code.talks 2014
 
E-handel med Commerce Server
E-handel med Commerce ServerE-handel med Commerce Server
E-handel med Commerce Server
 
Heels forever young
Heels forever youngHeels forever young
Heels forever young
 
Biosoja 2011
Biosoja 2011Biosoja 2011
Biosoja 2011
 
A passagem do virtual para o real
A passagem do virtual para o realA passagem do virtual para o real
A passagem do virtual para o real
 
Postgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_pPostgre sql y_replicacion_slony_p
Postgre sql y_replicacion_slony_p
 
R.p en el mundo digital
R.p en el mundo digitalR.p en el mundo digital
R.p en el mundo digital
 
Multimedia Y Monitores
Multimedia Y MonitoresMultimedia Y Monitores
Multimedia Y Monitores
 
El perfil del hombre y la cultura en México.
El perfil del hombre y la cultura en México.El perfil del hombre y la cultura en México.
El perfil del hombre y la cultura en México.
 
Ranking "250 Mejores Masters" - El Mundo 2015
Ranking "250 Mejores Masters" - El Mundo 2015Ranking "250 Mejores Masters" - El Mundo 2015
Ranking "250 Mejores Masters" - El Mundo 2015
 
Thoughts behind Cubie Messenger
Thoughts behind Cubie MessengerThoughts behind Cubie Messenger
Thoughts behind Cubie Messenger
 
Lokale Suche & Google+ Local - Die erfolgreichsten SEO-Strategien
Lokale Suche & Google+ Local - Die erfolgreichsten  SEO-Strategien Lokale Suche & Google+ Local - Die erfolgreichsten  SEO-Strategien
Lokale Suche & Google+ Local - Die erfolgreichsten SEO-Strategien
 
Microondas Zanussi ZBM26542XA
Microondas Zanussi ZBM26542XAMicroondas Zanussi ZBM26542XA
Microondas Zanussi ZBM26542XA
 
Investigacion de operaciones
Investigacion de operaciones Investigacion de operaciones
Investigacion de operaciones
 
Relación Médico-Paciente
Relación Médico-PacienteRelación Médico-Paciente
Relación Médico-Paciente
 

Similar a Serverprovisioning in einer dynamischen Infrastruktur

Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHFlorian Holzhauer
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrants0enke
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkinsinovex GmbH
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne rootcusy GmbH
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)NETWAYS
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
Konfigurationsmanagement mit Opscode Chef
Konfigurationsmanagement mit Opscode ChefKonfigurationsmanagement mit Opscode Chef
Konfigurationsmanagement mit Opscode ChefKonrad Ferdinand Heimel
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit JujuFrank Müller
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On RailsJonathan Weiss
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzunginovex GmbH
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascriptdzuvic
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsQAware GmbH
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsJosef Adersberger
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCBild GmbH & Co. KG
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Joachim Baumann
 
Puppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und BasismodulePuppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und Basismoduleinovex GmbH
 
Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)NETWAYS
 

Similar a Serverprovisioning in einer dynamischen Infrastruktur (20)

Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Entwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HHEntwicklung mit Chef und Vagrant - PHPUG HH
Entwicklung mit Chef und Vagrant - PHPUG HH
 
Ant Maven
Ant MavenAnt Maven
Ant Maven
 
Einführung in Puppet und Vagrant
Einführung in Puppet und VagrantEinführung in Puppet und Vagrant
Einführung in Puppet und Vagrant
 
Continuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und JenkinsContinuous Deployment mit Rex und Jenkins
Continuous Deployment mit Rex und Jenkins
 
Devops ohne root
Devops ohne rootDevops ohne root
Devops ohne root
 
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)Foreman: Provisionierungswege (Webinar vom 31. März 2016)
Foreman: Provisionierungswege (Webinar vom 31. März 2016)
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
Konfigurationsmanagement mit Opscode Chef
Konfigurationsmanagement mit Opscode ChefKonfigurationsmanagement mit Opscode Chef
Konfigurationsmanagement mit Opscode Chef
 
Cloud Provisioning mit Juju
Cloud Provisioning mit JujuCloud Provisioning mit Juju
Cloud Provisioning mit Juju
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur UmsetzungPuppet - Module entwickeln - Von der Planung bis zur Umsetzung
Puppet - Module entwickeln - Von der Planung bis zur Umsetzung
 
JAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & JavascriptJAX 2015 - Continuous Integration mit Java & Javascript
JAX 2015 - Continuous Integration mit Java & Javascript
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Docker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-PatternsDocker und Kubernetes Patterns & Anti-Patterns
Docker und Kubernetes Patterns & Anti-Patterns
 
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXCContainer im Betrieb - Ergebnisse der Validieren Docker vs. LXC
Container im Betrieb - Ergebnisse der Validieren Docker vs. LXC
 
Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)Gradle - Beginner's Workshop (german)
Gradle - Beginner's Workshop (german)
 
Puppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und BasismodulePuppet - Entwicklungsworkflow und Basismodule
Puppet - Entwicklungsworkflow und Basismodule
 
Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)Docker Hosting (Webinar vom 10. März 2016)
Docker Hosting (Webinar vom 10. März 2016)
 

Más de inovex GmbH

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegeninovex GmbH
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIinovex GmbH
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolutioninovex GmbH
 
Network Policies
Network PoliciesNetwork Policies
Network Policiesinovex GmbH
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learninginovex GmbH
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungeninovex GmbH
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeteninovex GmbH
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetesinovex GmbH
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systemsinovex GmbH
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreiheninovex GmbH
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenteninovex GmbH
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?inovex GmbH
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Projectinovex GmbH
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretabilityinovex GmbH
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use caseinovex GmbH
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessinovex GmbH
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with Pulumiinovex GmbH
 

Más de inovex GmbH (20)

lldb – Debugger auf Abwegen
lldb – Debugger auf Abwegenlldb – Debugger auf Abwegen
lldb – Debugger auf Abwegen
 
Are you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AIAre you sure about that?! Uncertainty Quantification in AI
Are you sure about that?! Uncertainty Quantification in AI
 
Why natural language is next step in the AI evolution
Why natural language is next step in the AI evolutionWhy natural language is next step in the AI evolution
Why natural language is next step in the AI evolution
 
WWDC 2019 Recap
WWDC 2019 RecapWWDC 2019 Recap
WWDC 2019 Recap
 
Network Policies
Network PoliciesNetwork Policies
Network Policies
 
Interpretable Machine Learning
Interpretable Machine LearningInterpretable Machine Learning
Interpretable Machine Learning
 
Jenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen UmgebungenJenkins X – CI/CD in wolkigen Umgebungen
Jenkins X – CI/CD in wolkigen Umgebungen
 
AI auf Edge-Geraeten
AI auf Edge-GeraetenAI auf Edge-Geraeten
AI auf Edge-Geraeten
 
Prometheus on Kubernetes
Prometheus on KubernetesPrometheus on Kubernetes
Prometheus on Kubernetes
 
Deep Learning for Recommender Systems
Deep Learning for Recommender SystemsDeep Learning for Recommender Systems
Deep Learning for Recommender Systems
 
Azure IoT Edge
Azure IoT EdgeAzure IoT Edge
Azure IoT Edge
 
Representation Learning von Zeitreihen
Representation Learning von ZeitreihenRepresentation Learning von Zeitreihen
Representation Learning von Zeitreihen
 
Talk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale AssistentenTalk to me – Chatbots und digitale Assistenten
Talk to me – Chatbots und digitale Assistenten
 
Künstlich intelligent?
Künstlich intelligent?Künstlich intelligent?
Künstlich intelligent?
 
Dev + Ops = Go
Dev + Ops = GoDev + Ops = Go
Dev + Ops = Go
 
Das Android Open Source Project
Das Android Open Source ProjectDas Android Open Source Project
Das Android Open Source Project
 
Machine Learning Interpretability
Machine Learning InterpretabilityMachine Learning Interpretability
Machine Learning Interpretability
 
Performance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use casePerformance evaluation of GANs in a semisupervised OCR use case
Performance evaluation of GANs in a semisupervised OCR use case
 
People & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madnessPeople & Products – Lessons learned from the daily IT madness
People & Products – Lessons learned from the daily IT madness
 
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
Infrastructure as (real) Code – Manage your K8s resources with PulumiInfrastructure as (real) Code – Manage your K8s resources with Pulumi
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
  • 3. Einleitung ... was bedeutet Serverprovisionierung Provision (Bereitstellung) •  Firmeware •  Virtualisierung •  Betriebssystem •  Konfigurationen •  Applikationen •  Daten 24.05.12 3
  • 4. Einleitung ... was bedeutet Serverprovisionierung Provision (Bereitstellung) •  Firmeware •  Virtualisierung •  Betriebssystem •  Konfigurationen •  Applikationen •  Daten 24.05.12 4
  • 5. Konfigurationsverwaltung Configure Build Manage Develop Zustand Puppet 24.05.12 5
  • 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
  • 7. Konfigurationsverwaltung ... Puppet Best Practices Puppet Environments •  Verschiedene Environments für Umgebungen und Entwickler 24.05.12 7
  • 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
  • 13. Konfigurationsverwaltung ... Puppet Best Practices Beispiel: 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. Konfigurationsverwaltung ... Puppet Best Practices Beispiel: 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. Konfigurationsverwaltung ... Puppet Best Practices Beispiel: Templates <%= wrapper.has_key?("jvm_initmemory") ? wrapper['jvm_initmemory'] : '128' %> 24.05.12 15
  • 16. Paketverwaltung Configure Build Manage Develop Zustand Pakete Puppet FPM 24.05.12 16
  • 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
  • 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 fpm 24.05.12 19
  • 20. Paketverwaltung ... als nächstes die Pakete erstellen # Ruby Environment auswählen $ source /usr/local/rvm/scripts/rvm $ rvm use ruby-1.9.1-p431 24.05.12 20
  • 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} lib 24.05.12 21
  • 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} lib Ergebnis: apache-tomcat-6.0.35_6.0.35_amd64.deb 24.05.12 22
  • 23. Server-Orchestration Configure Build Manage Develop Zustand Pakete Zugriff Puppet FPM Rex 24.05.12 23
  • 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
  • 25. Server-Orchestration ... mit Rex desc "test connection"; task "test", group => “portal", sub { say run "uptime"; say run "hostname"; }; 24.05.12 25
  • 26. Das Zusammenspiel ... Der verschiedenen Tools Configure Build Manage Develop Zustand Pakete Zugriff Transparenz Puppet FPM Rex VCS 24.05.12 26
  • 27. Jenkins ... der automatisierte Buildprozess Was ist Jenkins? •  Continuous Integration Server 24.05.12 27
  • 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