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
|
gleichen wie bei \emph{pacman}, da das Tool im Grunde ein Wrapper für {\tt
|
||||||
pacman} ist.
|
pacman} ist.
|
||||||
|
|
||||||
\subsubsection{Easybuild}
|
\subsection{Easybuild}
|
||||||
\label{sec:easybuild}
|
\label{sec:easybuild}
|
||||||
\href{http://hpcugent.github.io/easybuild/}{Easybuild} ist ein auf den
|
\href{http://hpcugent.github.io/easybuild/}{Easybuild} ist ein auf den
|
||||||
HPC-Bereich ausgelegtes Projekt, welches die Installation/Verwaltung verschiedener Versionen
|
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}
|
\label{ssub:funktionsweise_von_chef}
|
||||||
|
|
||||||
\href{http://www.getchef.com/chef/}{Chef} ist ein Framework, welches eine
|
\href{http://www.getchef.com/chef/}{Chef} ist ein Framework, welches eine
|
||||||
automatisierte Serverkonfiguration und -verwaltung ermöglicht. (TODO -
|
automatisierte Serverkonfiguration und -verwaltung ermöglicht. Chef übernimmt
|
||||||
Provisionierung und Deployment) Der Endanwender
|
dabei Aufgaben der Provisionierung (Installation der grundlegenden Dienste,
|
||||||
beschreibt hierbei die Systemressourcen und ihre Zustände in der
|
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
|
Programmiersprache \href{https://www.ruby-lang.org/}{Ruby}. Diese Definitionen
|
||||||
werden von dem Program \emph{Chef-Client} eingelesen und in notwendige Aktionen
|
werden von dem Program \emph{Chef-Client} eingelesen und in notwendige Aktionen
|
||||||
übersetzt, welche ausgeführt werden müssen, um den beschriebenen Zustand
|
ü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
|
Implementierung. Deswegen muss für jede Ressource mindestens ein Provider
|
||||||
existieren. Es kann mehrere Provider für eine Ressource geben, um zum
|
existieren. Es kann mehrere Provider für eine Ressource geben, um zum
|
||||||
Beispiel um mehrere Plattformenvarianten oder Betriebssysteme abdecken zu
|
Beispiel um mehrere Plattformenvarianten oder Betriebssysteme abdecken zu
|
||||||
können (z.B. bei Paketmanagern oder Initsystemen TODO - Initsystemen
|
können (z.B. bei Paketmanagern oder Initsystemen - \ref{sec:initsysteme}). In
|
||||||
erklären). In eigenen Cookbooks erstellte Resources/Provider nennt man LWRP
|
eigenen Cookbooks erstellte Resources/Provider nennt man LWRP
|
||||||
(Lightweight-Resource/Provider).
|
(Lightweight-Resource/Provider).
|
||||||
\item[recipes] In Recipes werden Ressourcen instanziiert, welche nötig sind,
|
\item[recipes] In Recipes werden Ressourcen instanziiert, welche nötig sind,
|
||||||
um die gewünschte Ziel zu erreichen. Dabei können Abhängigkeiten zwischen
|
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
|
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,
|
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
|
welche es erlauben Probleme der Anwendungsdomain effizient zu lösen. Auf der
|
||||||
anderen Seite wird verzichtet auf umfangreiche Standardbibliotheken und
|
anderen Seite wird auf umfangreiche Standardbibliotheken und Sprachkonstrukte
|
||||||
Sprachkonstrukte verzichtet, die in General-Purpose-Language üblich sind.
|
verzichtet, die in General-Purpose-Language üblich sind. Puppets Sprache wurde
|
||||||
Puppets Sprache wurde an das Konfigurationsformat von Nagios angelehnt
|
an das Konfigurationsformat der Überwachungssoftware Nagios angelehnt
|
||||||
(\cite{puppetlanguage}). Sie ist deklarativ gehalten und soll möglichst einfach
|
(\cite{puppetlanguage}). Sie ist deklarativ gehalten und soll möglichst einfach
|
||||||
erlernbar für Administratoren, auch ohne programmiertechnischen Hintergrund,
|
erlernbar für Administratoren, auch ohne programmiertechnischen Hintergrund,
|
||||||
sein. Der Schwerpunkt liegt auf der Beschreibung von \emph{Resources}. Die
|
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
|
Parsers in Ruby implementiert, was wiederum den den Nachteil hat, dass dafür
|
||||||
eine weitere Sprachen erlernt werden muss. Manche Unternehmen und Organisationen
|
eine weitere Sprachen erlernt werden muss. Manche Unternehmen und Organisationen
|
||||||
greifen bevorzugt auf Puppet zurück, weil es einfacher ist neue Mitarbeiter ohne
|
greifen bevorzugt auf Puppet zurück, weil es einfacher ist neue Mitarbeiter ohne
|
||||||
Rubykenntnisse in diesem Framework zu schulen (TODO - Beleg). Andere wie
|
Rubykenntnisse in diesem Framework zu schulen. Andere wie bevorzugen die
|
||||||
bevorzugen die Flexibilität von Ruby. Facebook gab dies als Einen der Gründe an,
|
Flexibilität von Ruby. Facebook gab dies als einen der Gründe an, warum sie im
|
||||||
warum sie im Jahre 2013 von \emph{CFEngine2} (TODO - Link) auf \emph{Chef 11}
|
Jahre 2013 von \emph{CFEngine2} auf \emph{Chef 11} umgestiegen sind
|
||||||
umgestiegen sind.
|
\cite{facebooklikeschef}.
|
||||||
|
|
||||||
Das strukturelle Äquivalent zu \emph{Cookbooks} in Chef ist in Puppet das
|
Das strukturelle Äquivalent zu \emph{Cookbooks} in Chef ist in Puppet das
|
||||||
Puppet-Module. Diese werden in der Community ausgetauscht und entwickelt. Da
|
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
|
weiteren wichtigen Quelle hat sich die Plattform
|
||||||
\href{https://github.com}{Github} für beide Projekte entwickelt. Für einen
|
\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
|
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
|
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
|
Programmiersprachen in beide Projekte mit weniger als 100 Suchtreffer aus
|
||||||
Übersichtlichkeitsgründen nicht in das in Diagramm übernommen (siehe Tabelle). Kurze
|
Übersichtlichkeitsgründen nicht in das in Diagramm übernommen (siehe Tabelle).
|
||||||
Stichproben der Suchergebnisse, dass die Suchtreffer sich überwiegend mit den
|
Eine kurze Stichproben der Suchergebnisse, dass die Suchtreffer sich überwiegend
|
||||||
eigentlichen Projekten Chef und Puppet beschäftigen. Anzumerken ist, das
|
mit den eigentlichen Projekten Chef und Puppet beschäftigen. Anzumerken ist, das
|
||||||
Zielgruppe von Puppet eher Systemadminstratoren sind, während Chef auch von
|
Zielgruppe von Puppet eher Systemadminstratoren aus besteht, während Chef auch
|
||||||
vielen Entwicklern genutzt wird, wobei Letztere bevorzugt Github verwenden.
|
von vielen Entwicklern genutzt wird. Letztere verwenden bevorzugt Github.
|
||||||
|
|
||||||
\begin{figure}[H]
|
\begin{figure}[H]
|
||||||
|
|
||||||
@ -361,8 +363,8 @@ Sprache & Ruby & Puppet & Shell & Python & Javascript & Perl & PHP & Java & Vim
|
|||||||
|
|
||||||
\vspace{0.5cm}
|
\vspace{0.5cm}
|
||||||
|
|
||||||
Eine andere wichtige Statistik für Opensourceprojekte ist die Subscriber auf den jeweiligen
|
Eine andere wichtige Statistik für Opensourceprojekte ist die Anzahl der
|
||||||
Mailinglisten.
|
Subscriber auf den jeweiligen Mailinglisten.
|
||||||
|
|
||||||
\begin{description}
|
\begin{description}
|
||||||
\item[chef@lists.opscode.com] Community-Mailingliste, 1620 Leser, \href{http://lists.opscode.com/sympa/info/chef}{Quelle}, Stand: 31.03.2014
|
\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
|
Manifest \emph{init.pp}, bei dem die Class nur ``bar'' lauten würde. Diese
|
||||||
Benennungskonvention wurde in Chef übernommen, um Recipes in Cookbooks zu
|
Benennungskonvention wurde in Chef übernommen, um Recipes in Cookbooks zu
|
||||||
referenzieren (anstelle von \emph{init.rb} lautet die Datei \emph{default.rb}).
|
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.
|
Inhalt der Datei bildet das Recipe.
|
||||||
|
|
||||||
Eine Class in Puppet kann über Parameter konfiguriert werden. Parameter werden
|
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}
|
Custom-Type auch direkt in der Puppet-Sprache mit Schlüsselwort \emph{define}
|
||||||
definiert werden.
|
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
|
Chef benutzt die gleiche Template-Syntax wie Puppet (eRuby). Einziger
|
||||||
Unterschied bei Chef ist die Funktion für verschiedene
|
Unterschied bei Chef ist die Funktion für verschiedene
|
||||||
Plattformen/Plattformversionen verschiedene Templatevarianten der selben Datei
|
Plattformen/Plattformversionen verschiedene Templatevarianten der selben Datei
|
||||||
im Cookbook vorzuhalten. Die Varianten werden durch Unterordner im
|
im Cookbook vorzuhalten. Die Varianten werden durch Unterordner im
|
||||||
\emph{templates/} unterschieden (z.B. \emph{templates/windows} oder
|
\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.
|
existiert fällt Chef auf \emph{templates/default} zurück.
|
||||||
|
|
||||||
Ein wesentlicher Unterschied zwischen Puppet und Chef ist die Reihenfolge der
|
Ein wesentlicher Unterschied zwischen Puppet und Chef ist die Reihenfolge der
|
||||||
Ausführung von Resources. Chef überprüft die Resources in der Reihenfolge, in
|
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
|
der sie in der Run-List und in den Recipes geladen werden. Puppet sortiert
|
||||||
Resources um. Bei Puppet deswegen spricht man von modelbasiertem
|
Resources um. Bei Puppet deswegen spricht man von modelbasiertem
|
||||||
Konfigurationsmanagment. Da manche Resources voneinander kann durch die Angabe
|
Konfigurationsmanagment. Da manche Resources voneinander abhängen kann durch
|
||||||
von Abhängigkeiten mittels der Parameter \emph{before} und \emph{require}
|
die Angabe der Parameter \emph{before} und \emph{require} die Reihenfolge
|
||||||
festgelegt werden. Über die Parameter \emph{notify} und \emph{subscribe} können
|
festgelegt werden. Über die Parameter \emph{notify} und \emph{subscribe} können
|
||||||
darüber hinaus Resourcen aktualisiert werden, wenn sich eine Abhängigkeit
|
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
|
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
|
gehörige Konfiguration verändert hat). In Chef kann Letzeres über die Paramether
|
||||||
Paramether \emph{notifies} und \emph{subscribes} angegeben werden.
|
\emph{notifies} und \emph{subscribes} angegeben werden.
|
||||||
|
|
||||||
Wie auch Chef bietet Puppet verschiedene Betriebsmodi. Im einfachsten Fall wird
|
Wie auch Chef bietet Puppet verschiedene Betriebsmodi. Im einfachsten Fall wird
|
||||||
mit dem Befehl \emph{puppet apply} ein lokales Manifest geladen werden
|
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
|
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
|
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.
|
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
|
Die Zahl der Nodes, die von einem Server bedient werden, soll sich dabei
|
||||||
haben auf bis zu 10.000 Nodes pro Server (Quelle: \cite{chefscale}). Für Puppet
|
vervierfacht haben auf bis zu 10.000 Nodes pro Server (Quelle:
|
||||||
wurden keine verlässlichen Zahlen gefunden, wieviel Nodes pro Server betreut
|
\cite{chefscale}). Für Puppet wurden keine verlässlichen Zahlen gefunden, wie
|
||||||
werden können. Allerdings ist anzunehmen, dass die Zahl architekturbedingt unter
|
viele Nodes pro Server betreut werden können. Allerdings ist anzunehmen, dass
|
||||||
der von Chef liegt.
|
die Zahl architekturbedingt unter der von Chef liegt.
|
||||||
|
|
||||||
Zu den von offiziell von Chef unterstützt Plattformen gehören Windows, MacOS X,
|
Zu den von offiziell von Chef unterstützt Plattformen gehören Windows, MacOS X,
|
||||||
verschiedene Linuxderivate (Debian, Ubuntu, Redhat\ldots) und Solaris. Puppet
|
verschiedene Linuxderivate (Debian, Ubuntu, Redhat\ldots) und Solaris. Puppet
|
||||||
bietet breiteren Support und unterstützt zusätzlich Free- und OpenBSD sowie
|
bietet breiteren Support und unterstützt zusätzlich Free- und OpenBSD sowie
|
||||||
HP-UX und AIX.
|
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
|
% 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
|
und fügt, die in den Attributes konfigurierten, DNS-Einträge zu den
|
||||||
entsprechenden Zonen hinzu.
|
entsprechenden Zonen hinzu.
|
||||||
\item[dhcp]
|
\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
|
Zuordnung von festen IP-Adressen zu Nodes, kann ein DNS-Server und ein
|
||||||
NTP-Server
|
NTP-Server
|
||||||
festgelegt werden.
|
festgelegt werden.
|
||||||
|
@ -45,3 +45,15 @@
|
|||||||
year = {2013},
|
year = {2013},
|
||||||
month = {Februar}
|
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