Top Banner
Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst. Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012 vorgestellt am 23.05.2012 Alexander Pacnik inovex GmbH
34

Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Feb 06, 2018

Download

Documents

trinhtuong
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

Serverprovisioning in einer dynamischen Infrastruktur Systemmanagement LinuxTag 2012

vorgestellt am 23.05.2012

Alexander Pacnik inovex GmbH

Page 2: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 2

... was wollen wir erreichen?

Einleitung

Ziele beim Einsatz von Tools

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

Page 3: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 3

... was bedeutet Serverprovisionierung

Einleitung

Provision (Bereitstellung)

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

Page 4: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 4

... was bedeutet Serverprovisionierung

Einleitung

Provision (Bereitstellung)

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

Page 5: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Konfigurationsverwaltung

24.05.12 5

Zustand

Puppet

Configure Build Manage Develop

Page 6: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 6

... Puppet

Konfigurationsverwaltung

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

Page 7: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 7

... Puppet Best Practices

Konfigurationsverwaltung

Puppet Environments

•  Verschiedene Environments für Umgebungen und Entwickler

Page 8: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 8

... Puppet Best Practices

Konfigurationsverwaltung

Puppet Environments

•  Verschiedene Environments für Umgebungen und Entwickler [production] modulepath = $repo/services:$repo/modules manifest = $repo/manifests/production_environment.pp

Page 9: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 9

... Puppet Best Practices

Konfigurationsverwaltung

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

Page 10: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 10

... Puppet Best Practices

Konfigurationsverwaltung

Modularisierung

•  mehrstufiges Vorgehen •  Basismodule so atomar wie möglich •  Servicemodule die den eigentlichen Dienst beschreiben •  Benötigte Module in der Node-Definition zusammenführen

Page 11: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 11

... Puppet Best Practices

Konfigurationsverwaltung

Beispiel: JBoss-Modul

class jboss { define service ( $wrapper={} ) { # Einmalig Pakete installieren require jboss::server # Weitere Aktionen } }

Page 12: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 12

... Puppet Best Practices

Konfigurationsverwaltung

Beispiel: JBoss-Modul

class jboss { define service ( $wrapper={} ) { # Einmalig Pakete installieren require jboss::server # Weitere Aktionen } }

Page 13: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 13

... Puppet Best Practices

Konfigurationsverwaltung

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",

# [ ... ]

Page 14: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 14

... Puppet Best Practices

Konfigurationsverwaltung

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",

# [ ... ]

Page 15: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 15

... Puppet Best Practices

Konfigurationsverwaltung

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

Page 16: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Paketverwaltung

24.05.12 16

Zustand

Puppet

Configure

Pakete

FPM

Build Manage Develop

Page 17: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 17

... die Welt ist ein Paket

Paketverwaltung

Ziele

•  schnelle und konsistente Verteilung •  Integrität gewährleisten •  einfache Anwendung und Integration in die Buildumgebung •  Optional: Abhängigkeiten verwalten

Page 18: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 18

... die Welt ist ein Paket

Paketverwaltung

Ruby Version Manager (RVM) •  Verwaltet getrennte Ruby Versionen, Gem Sets etc.

Package Management mit FPM •  Ruby Tool zum erstellen von Paketen

Page 19: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 19

... als erstes rvm, ruby und fpm installieren

Paketverwaltung

# 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

Page 20: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 20

... als nächstes die Pakete erstellen

Paketverwaltung

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

Page 21: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 21

... als nächstes die Pakete erstellen

Paketverwaltung

# 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

Page 22: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 22

... als nächstes die Pakete erstellen

Paketverwaltung

# 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

Page 23: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Server-Orchestration

24.05.12 23

Zustand

Puppet

Configure

Pakete

FPM

Build

Zugriff

Rex

Manage Develop

Page 24: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 24

... Server remote steuern

Server-Orchestration

Ziele

•  Fehlertoleranz •  Nachvollziebarkeit Maßnahmen

•  Notwendige Aufgaben Skripten (nicht lokal auf den Servern arbeiten) •  Skripte in einem VCS verwalten •  Vernünftiges Logging implementieren

Page 25: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 25

... mit Rex

Server-Orchestration

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

Page 26: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Das Zusammenspiel

24.05.12 26

... Der verschiedenen Tools

Zustand

Puppet

Configure

Pakete

FPM

Build

Zugriff

Rex

Manage

Transparenz

VCS

Develop

Page 27: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 27

... der automatisierte Buildprozess

Jenkins

Was ist Jenkins? •  Continuous Integration Server

Page 28: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 28

... der automatisierte Buildprozess

Jenkins

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)

Page 29: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 29

... Puppet Verwaltung und mehr

The Foreman

Was ist The Foreman?

•  Tool zur Serververwaltung

Page 30: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 30

... Puppet Verwaltung und mehr

The Foreman

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

Page 31: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 31

... die Puppet IDE

Geppetto

Was ist Geppetto? •  IDE zur Puppet Entwicklung auf Basis von Eclipse Vorteile •  Syntax Highlighting •  Code-Verfollständigung

Page 32: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Fragen?

24.05.12 32

Zustand

Puppet

The Foreman

Configure

Pakete

FPM

Jenkins

Build

Zugriff

Rex

Manage

Transparenz

VCS

Geppetto

Develop

Page 33: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

Wir nutzen Technologien, um unsere Kunden glücklich zu machen. Und uns selbst.

inovex GmbH Pforzheim Karlsruher Straße 71 D-75179 Pforzheim

München Valentin-Linhof-Straße 2 D-81829 München

Köln Kaiser-Wilhelm-Ring 27-29 D-50672 Köln

Vielen Dank für Ihre Aufmerksamkeit!

Page 34: Serverprovisioning in einer dynamischen Infrastruktur ... · PDF fileAlexander Pacnik inovex GmbH . 24.05.12 2 ... Server-Orchestration 24.05.12 23 Zustand Puppet Configure Pakete

24.05.12 34

... wo sie in Ruhe nachlesen können

Quellen

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