chef-lctp/presentation/presentation.md

3.7 KiB

Chef

Konfigurationsmanagement

von Jörg Thalheim, (Gruppe 4, Matrikel 3749175)

Dresden, 22 Januar #TODO aktualisieren

Inhaltsübersicht

  • Was ist Konfigurationsmanagement
  • Was ist Chef/Puppet
  • Einführung in Chef
  • Testing
  • Demo

Was ist Konfigurationsmanagement?

  • Konfigurationsmanagement
  • Beispiele: Chef, Puppet, Salt, Ansible, CFEngine
Chef Puppet Salt Ansible CFEngine

Note:

  • in der Praxis mehr Knoten
  • wechselnde Admins
  • Dokumentation veraltet schnell
  • sowohl bestehende Knoten müssen aktuell gehalten werden, als auch neue eingerichtet
  • Komplexe Shell-Skripte sind schlecht maintainbar, häufig nicht portable und langsam
  • Problem wird durch Konfigurationsmanagements gelöst.
  • Grundidee: Infrastruktur wird durch eine Konfigurationsdatei oder Sprache beschrieben und das Konfigurationsmanagement, versucht diesen Zustand herzustellen.
  • Hier ein paar Beispiele, Im folgenden werde ich näher auf chef und Puppet eingehen.

Was ist Chef/Puppet?

Kriterium Chef Puppet
Programmiersprache Ruby Ruby
Konfigurationsprache Ruby eigene DSL (Ruby)
Paradigma Prozedural Model-Driven
Codezeilen 108,726[1][1] 353,651[2][2]
Community 11,270 Repositories auf Github[3][3] 13.020 Repositories auf Github[4][4]
kommerzieller Support

Note:

  • Beide Projekte sind in Ruby geschrieben.
  • Chef: Die Konfigurations wird in Ruby geschrieben.
  • Puppet: Benutzt eine auf Puppet optimierte, vereinfachte Sprache -> Wird von Anfängern und Nicht-Programmieren als einfacher empfunden -> Grund warum es von manchen Firmen bevorzugt wird um Umschulung zu sparen (mittlerweile nicht mehr komplett wahr, da Teile jetzt auch in Ruby geschrieben werden können) -> aber weniger flexible als Ruby (Grund bei Facebook, 10000 Nodes mit Chef provisionier)
  • Während die Regeln und Beschreibung in Chef standartmäßig in der Reihenfolge abgearbeitet wird in der sie geladen werden, sortiert Puppet diese um. In beiden kann die Reihenfolge durch Spezifikation von Abhängigkeiten umsortiert werden (Später ein Beispiel)
  • Puppet: eigene Sprache -> komplexere Codebasis
  • Um die Größe der Community abzuschätzen (schwierig): Suchtreffer für Repositories bei Github
  • Alter(Puppet) > Alter(Chef)
  • Hinter beiden Projekten stehen Firmen, welche das Produkt weiterpflegen, Support anbieten und Hosting anbieten

Einführung in Chef

Einführung in Chef: Grundbegriffe

  • Cookbook, slurm
  • Recipe, slurm::
  • Resource, z.B.: template["/etc/hostname"], service["ntp"]
  • Role, z.B.: headnode, ldap
  • Node, z.B.: node100.tu-dresden.de

Einführung in Chef: Ordner-Struktur eines Cookbook

  • Attribute
  • Recipes
  • Templates
  • Definitions
  • Providers
  • Resources

Einführung in Chef: Code-Beispiel