chef: Todos weitgehend entfernt
This commit is contained in:
parent
62ad17d07a
commit
414aed5046
@ -31,8 +31,14 @@ die Möglichkeit, diese zu aktualisieren. Die Kommandozeilen-Argumente sind die
|
||||
gleichen wie bei \emph{pacman}, da das Tool im Grunde ein Wrapper für {\tt
|
||||
pacman} ist.
|
||||
|
||||
\subsubsection{Easybuild}
|
||||
\subsection{Easybuild}
|
||||
\label{sec:easybuild}
|
||||
\href{http://hpcugent.github.io/easybuild/}{Easybuild} ist ein auf den
|
||||
HPC-Bereich ausgelegtes Projekt, welches die Installation/Verwaltung verschiedener Versionen
|
||||
von Software ermöglicht. Darüber hinaus generiert es Environment-Modules und erkennt Abhängigkeiten.
|
||||
von Software ermöglicht. Darüber hinaus generiert es Environment-Modules und
|
||||
erkennt Abhängigkeiten.
|
||||
|
||||
\subsection{Initsystem}
|
||||
\label{sec:initsysteme}
|
||||
|
||||
Prozess, der in einem Betriebsystem alle nachfolgenden Prozesse verwaltet und startet.
|
||||
|
@ -2,9 +2,11 @@
|
||||
\label{ssub:funktionsweise_von_chef}
|
||||
|
||||
\href{http://www.getchef.com/chef/}{Chef} ist ein Framework, welches eine
|
||||
automatisierte Serverkonfiguration und -verwaltung ermöglicht. (TODO -
|
||||
Provisionierung und Deployment) Der Endanwender
|
||||
beschreibt hierbei die Systemressourcen und ihre Zustände in der
|
||||
automatisierte Serverkonfiguration und -verwaltung ermöglicht. Chef übernimmt
|
||||
dabei Aufgaben der Provisionierung (Installation der grundlegenden Dienste,
|
||||
Resourcenverwaltung, Einrichtung und Konfiguration von Middleware) bis hin zu
|
||||
Deployment (Verteilung der eigentlichen Business-Anwendung).
|
||||
Der Endanwender beschreibt hierbei die Systemressourcen und ihre Zustände in der
|
||||
Programmiersprache \href{https://www.ruby-lang.org/}{Ruby}. Diese Definitionen
|
||||
werden von dem Program \emph{Chef-Client} eingelesen und in notwendige Aktionen
|
||||
übersetzt, welche ausgeführt werden müssen, um den beschriebenen Zustand
|
||||
@ -119,8 +121,8 @@ findet. Hier nochmal die einzelnen Verzeichnisse im Überblick:
|
||||
Implementierung. Deswegen muss für jede Ressource mindestens ein Provider
|
||||
existieren. Es kann mehrere Provider für eine Ressource geben, um zum
|
||||
Beispiel um mehrere Plattformenvarianten oder Betriebssysteme abdecken zu
|
||||
können (z.B. bei Paketmanagern oder Initsystemen TODO - Initsystemen
|
||||
erklären). In eigenen Cookbooks erstellte Resources/Provider nennt man LWRP
|
||||
können (z.B. bei Paketmanagern oder Initsystemen - \ref{sec:initsysteme}). In
|
||||
eigenen Cookbooks erstellte Resources/Provider nennt man LWRP
|
||||
(Lightweight-Resource/Provider).
|
||||
\item[recipes] In Recipes werden Ressourcen instanziiert, welche nötig sind,
|
||||
um die gewünschte Ziel zu erreichen. Dabei können Abhängigkeiten zwischen
|
||||
@ -254,9 +256,9 @@ General-Purpose-Languages wie Ruby, Java oder C/C++ eine
|
||||
Domain-Specific-Language (DSL). Eine DSL ist eine eigens für den Anwendungszweck
|
||||
geschriebene und optimierte Sprache. Sie enthält häufig Elemente und Ausdrücke,
|
||||
welche es erlauben Probleme der Anwendungsdomain effizient zu lösen. Auf der
|
||||
anderen Seite wird verzichtet auf umfangreiche Standardbibliotheken und
|
||||
Sprachkonstrukte verzichtet, die in General-Purpose-Language üblich sind.
|
||||
Puppets Sprache wurde an das Konfigurationsformat von Nagios angelehnt
|
||||
anderen Seite wird auf umfangreiche Standardbibliotheken und Sprachkonstrukte
|
||||
verzichtet, die in General-Purpose-Language üblich sind. Puppets Sprache wurde
|
||||
an das Konfigurationsformat der Überwachungssoftware Nagios angelehnt
|
||||
(\cite{puppetlanguage}). Sie ist deklarativ gehalten und soll möglichst einfach
|
||||
erlernbar für Administratoren, auch ohne programmiertechnischen Hintergrund,
|
||||
sein. Der Schwerpunkt liegt auf der Beschreibung von \emph{Resources}. Die
|
||||
@ -272,10 +274,10 @@ Puppets Sprache definiert werden. Stattdessen werden diese als Erweiterung des
|
||||
Parsers in Ruby implementiert, was wiederum den den Nachteil hat, dass dafür
|
||||
eine weitere Sprachen erlernt werden muss. Manche Unternehmen und Organisationen
|
||||
greifen bevorzugt auf Puppet zurück, weil es einfacher ist neue Mitarbeiter ohne
|
||||
Rubykenntnisse in diesem Framework zu schulen (TODO - Beleg). Andere wie
|
||||
bevorzugen die Flexibilität von Ruby. Facebook gab dies als Einen der Gründe an,
|
||||
warum sie im Jahre 2013 von \emph{CFEngine2} (TODO - Link) auf \emph{Chef 11}
|
||||
umgestiegen sind.
|
||||
Rubykenntnisse in diesem Framework zu schulen. Andere wie bevorzugen die
|
||||
Flexibilität von Ruby. Facebook gab dies als einen der Gründe an, warum sie im
|
||||
Jahre 2013 von \emph{CFEngine2} auf \emph{Chef 11} umgestiegen sind
|
||||
\cite{facebooklikeschef}.
|
||||
|
||||
Das strukturelle Äquivalent zu \emph{Cookbooks} in Chef ist in Puppet das
|
||||
Puppet-Module. Diese werden in der Community ausgetauscht und entwickelt. Da
|
||||
@ -290,15 +292,15 @@ Modulen, (Stand: 31.03.2014 - ermittelt über die
|
||||
weiteren wichtigen Quelle hat sich die Plattform
|
||||
\href{https://github.com}{Github} für beide Projekte entwickelt. Für einen
|
||||
Vergleich wurde die Anzahl der Suchtreffer für Projekte, die die Suchbegriffe
|
||||
"Chef" und "Puppet" in der Suchmaschine auf Github herangezogen. Github filtert
|
||||
``Chef'' und ``Puppet'' in der Suchmaschine auf Github herangezogen. Github filtert
|
||||
Forks (Abspaltungen) von Projekten aus den Suchergebnissen heraus und
|
||||
schlüsselt die Ergebnisse nach Programmiersprache auf. Es werden alle
|
||||
schlüsselt die Ergebnisse nach Programmiersprache auf. Es wurden alle
|
||||
Programmiersprachen in beide Projekte mit weniger als 100 Suchtreffer aus
|
||||
Übersichtlichkeitsgründen nicht in das in Diagramm übernommen (siehe Tabelle). Kurze
|
||||
Stichproben der Suchergebnisse, dass die Suchtreffer sich überwiegend mit den
|
||||
eigentlichen Projekten Chef und Puppet beschäftigen. Anzumerken ist, das
|
||||
Zielgruppe von Puppet eher Systemadminstratoren sind, während Chef auch von
|
||||
vielen Entwicklern genutzt wird, wobei Letztere bevorzugt Github verwenden.
|
||||
Übersichtlichkeitsgründen nicht in das in Diagramm übernommen (siehe Tabelle).
|
||||
Eine kurze Stichproben der Suchergebnisse, dass die Suchtreffer sich überwiegend
|
||||
mit den eigentlichen Projekten Chef und Puppet beschäftigen. Anzumerken ist, das
|
||||
Zielgruppe von Puppet eher Systemadminstratoren aus besteht, während Chef auch
|
||||
von vielen Entwicklern genutzt wird. Letztere verwenden bevorzugt Github.
|
||||
|
||||
\begin{figure}[H]
|
||||
|
||||
@ -361,8 +363,8 @@ Sprache & Ruby & Puppet & Shell & Python & Javascript & Perl & PHP & Java & Vim
|
||||
|
||||
\vspace{0.5cm}
|
||||
|
||||
Eine andere wichtige Statistik für Opensourceprojekte ist die Subscriber auf den jeweiligen
|
||||
Mailinglisten.
|
||||
Eine andere wichtige Statistik für Opensourceprojekte ist die Anzahl der
|
||||
Subscriber auf den jeweiligen Mailinglisten.
|
||||
|
||||
\begin{description}
|
||||
\item[chef@lists.opscode.com] Community-Mailingliste, 1620 Leser, \href{http://lists.opscode.com/sympa/info/chef}{Quelle}, Stand: 31.03.2014
|
||||
@ -386,7 +388,7 @@ Module-Namen und Manifest-Namen gebildet. Wenn das Module ``foo'' das Manifest
|
||||
Manifest \emph{init.pp}, bei dem die Class nur ``bar'' lauten würde. Diese
|
||||
Benennungskonvention wurde in Chef übernommen, um Recipes in Cookbooks zu
|
||||
referenzieren (anstelle von \emph{init.rb} lautet die Datei \emph{default.rb}).
|
||||
Allerdings werden in Recipes keine seperaten Objekt definiert und der ganze
|
||||
Allerdings werden in Recipes keine separaten Objekt definiert und der ganze
|
||||
Inhalt der Datei bildet das Recipe.
|
||||
|
||||
Eine Class in Puppet kann über Parameter konfiguriert werden. Parameter werden
|
||||
@ -418,25 +420,30 @@ schon aus Chef bekannte \emph{Definition}. Diese kann im Gegensatz zum
|
||||
Custom-Type auch direkt in der Puppet-Sprache mit Schlüsselwort \emph{define}
|
||||
definiert werden.
|
||||
|
||||
Um zu Beginn Informationen über das zu provisionierende System zu sammeln, wird
|
||||
auf die Bibliothek \href{http://puppetlabs.com/facter}{Facter} zurückgriffen. In
|
||||
frühen Versionen von Chef wurde die gleiche Bibliothek verwendet, bevor später
|
||||
\href{http://docs.opscode.com/ohai.html}{Ohai} integriert wurde.
|
||||
|
||||
Chef benutzt die gleiche Template-Syntax wie Puppet (eRuby). Einziger
|
||||
Unterschied bei Chef ist die Funktion für verschiedene
|
||||
Plattformen/Plattformversionen verschiedene Templatevarianten der selben Datei
|
||||
im Cookbook vorzuhalten. Die Varianten werden durch Unterordner im
|
||||
\emph{templates/} unterschieden (z.B. \emph{templates/windows} oder
|
||||
\emph{templates/ubuntu-12.04}). Falls kein der Plattform entsprechende Order
|
||||
\emph{templates/ubuntu-12.04}). Falls kein der Plattform entsprechende Ordner
|
||||
existiert fällt Chef auf \emph{templates/default} zurück.
|
||||
|
||||
Ein wesentlicher Unterschied zwischen Puppet und Chef ist die Reihenfolge der
|
||||
Ausführung von Resources. Chef überprüft die Resources in der Reihenfolge, in
|
||||
der sie in der Run-List und in den Recipes geladen werden. Puppet sortiert
|
||||
Resources um. Bei Puppet deswegen spricht man von modelbasiertem
|
||||
Konfigurationsmanagment. Da manche Resources voneinander kann durch die Angabe
|
||||
von Abhängigkeiten mittels der Parameter \emph{before} und \emph{require}
|
||||
Konfigurationsmanagment. Da manche Resources voneinander abhängen kann durch
|
||||
die Angabe der Parameter \emph{before} und \emph{require} die Reihenfolge
|
||||
festgelegt werden. Über die Parameter \emph{notify} und \emph{subscribe} können
|
||||
darüber hinaus Resourcen aktualisiert werden, wenn sich eine Abhängigkeit
|
||||
geändert hat (z.B. kann ein Dienst neugestartet werden, wenn sich die dazu
|
||||
gehörige Konfiguration verändert hat). In Chef kann Letzeres über die
|
||||
Paramether \emph{notifies} und \emph{subscribes} angegeben werden.
|
||||
gehörige Konfiguration verändert hat). In Chef kann Letzeres über die Paramether
|
||||
\emph{notifies} und \emph{subscribes} angegeben werden.
|
||||
|
||||
Wie auch Chef bietet Puppet verschiedene Betriebsmodi. Im einfachsten Fall wird
|
||||
mit dem Befehl \emph{puppet apply} ein lokales Manifest geladen werden
|
||||
@ -451,17 +458,24 @@ Manifeste in einem Git-Repository, wobei Puppet periodisch über einen Cron-Job
|
||||
aufgerufen wird und die ausgecheckten Manifeste ausführt. Während Chef-Server
|
||||
bis zur Version 10 wie Puppet-Master in Ruby geschrieben war, wurde der API-Teil von
|
||||
Chef-Server wurde in Version 11 in der Programmiersprache Erlang neugeschrieben.
|
||||
Die Zahl der Nodes, die von einem Server bedient werden können soll vervierfacht
|
||||
haben auf bis zu 10.000 Nodes pro Server (Quelle: \cite{chefscale}). Für Puppet
|
||||
wurden keine verlässlichen Zahlen gefunden, wieviel Nodes pro Server betreut
|
||||
werden können. Allerdings ist anzunehmen, dass die Zahl architekturbedingt unter
|
||||
der von Chef liegt.
|
||||
Die Zahl der Nodes, die von einem Server bedient werden, soll sich dabei
|
||||
vervierfacht haben auf bis zu 10.000 Nodes pro Server (Quelle:
|
||||
\cite{chefscale}). Für Puppet wurden keine verlässlichen Zahlen gefunden, wie
|
||||
viele Nodes pro Server betreut werden können. Allerdings ist anzunehmen, dass
|
||||
die Zahl architekturbedingt unter der von Chef liegt.
|
||||
|
||||
Zu den von offiziell von Chef unterstützt Plattformen gehören Windows, MacOS X,
|
||||
verschiedene Linuxderivate (Debian, Ubuntu, Redhat\ldots) und Solaris. Puppet
|
||||
bietet breiteren Support und unterstützt zusätzlich Free- und OpenBSD sowie
|
||||
HP-UX und AIX.
|
||||
|
||||
%- Resume: Ähnliche Projekte, lösen das gleiche Problem auf unterschiedliche Weise
|
||||
Chef und Puppet bieten den gleichen Funktionsumfang. Die darunter liegenden
|
||||
Grundkonzepte sind ähnlich, so das Anwender des einen Systems mit wenig Aufwand
|
||||
auch das andere System verstehen. Die beiden Firmen hinter den Produkten, Puppet
|
||||
Labs und Chef, stehen, enwickeln das Produkt stetig weiter und bieten
|
||||
kommerziellen Support. Während Puppet auf den klassischen Systemadminstrator
|
||||
abzielt, ist Chef ein Produkt der
|
||||
\href{http://www.getchef.com/solutions/devops/}{DevOps}-Bewegung, bei welcher
|
||||
adminstrative Teil einer Organisation stärker Entwicklung verzahnt wird.
|
||||
|
||||
% vim: set spell spelllang=de_de
|
||||
|
@ -104,7 +104,7 @@ Für das Deployment wurden fünf Cookbooks geschrieben:
|
||||
und fügt, die in den Attributes konfigurierten, DNS-Einträge zu den
|
||||
entsprechenden Zonen hinzu.
|
||||
\item[dhcp]
|
||||
Dieses Cookbook richtet den ISC-DHCP-Server (TODO Link) ein. Neben der
|
||||
Dieses Cookbook richtet den \href{https://www.isc.org/downloads/dhcp/}{ISC-DHCP-Server} ein. Neben der
|
||||
Zuordnung von festen IP-Adressen zu Nodes, kann ein DNS-Server und ein
|
||||
NTP-Server
|
||||
festgelegt werden.
|
||||
|
@ -45,3 +45,15 @@
|
||||
year = {2013},
|
||||
month = {Februar}
|
||||
}
|
||||
|
||||
@misc{facebooklikeschef,
|
||||
author = {chef},
|
||||
title = {Scaling systems configuration at Facebook - Phil Dibowitz},
|
||||
url = {http://www.youtube.com/watch?v=SYZ2GzYAw_Q},
|
||||
year = {2013},
|
||||
month = {April}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user