chef: Vergleich abgeschlossen
This commit is contained in:
parent
62a90a347a
commit
9cd1f7e26b
@ -379,41 +379,89 @@ hat.
|
|||||||
|
|
||||||
Anstelle von Recipes werden in Puppet Manifests geschrieben. Das sind Dateien,
|
Anstelle von Recipes werden in Puppet Manifests geschrieben. Das sind Dateien,
|
||||||
die auf Endung .pp enden und sich in dem Ordner \emph{manifests} im
|
die auf Endung .pp enden und sich in dem Ordner \emph{manifests} im
|
||||||
Puppet-Module befinden. Jedes Manifest definiert eine \emph{Class}. Der Namen
|
Puppet-Module befinden. Jedes Manifest definiert eine \emph{Class} eingeleitet
|
||||||
dieser Klasse wird aus dem Module-Namen und Manifest-Namen gebildet. Wenn Module
|
durch das Schlüsselwort \emph{class}. Der Namen dieser Klasse wird aus dem
|
||||||
``foo'' das Manifest ``bar'' enthält, ist der Name der Class ``foo::bar''.
|
Module-Namen und Manifest-Namen gebildet. Wenn das Module ``foo'' das Manifest
|
||||||
Außnahme bildet das Manifest \emph{init.pp}, bei dem die Class nur ``bar''
|
``bar'' enthält, ist der Name der Class ``foo::bar''. Außnahme bildet das
|
||||||
lauten würde. Diese Benennungskonvention wurde in Chef übernommen, um Recipes zu
|
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}).
|
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 seperaten Objekt definiert und der ganze
|
||||||
Inhalt der Datei bildet das Recipe. Eine Class in Puppet kann über Parameter
|
Inhalt der Datei bildet das Recipe.
|
||||||
konfiguriert werden. Chef besitzt mit Attributes ein vergleichbares Konzept.
|
|
||||||
(TODO) Resources heissen in Puppet Types. Puppet liefert wie Chef eine Reihe von
|
Eine Class in Puppet kann über Parameter konfiguriert werden. Parameter werden
|
||||||
|
im Kopfteil der Class deklariert und können Standartwerte besitzen. Chef besitzt
|
||||||
|
mit Attributes ein vergleichbares Konzept. Allerdings werden Attributes
|
||||||
|
getrennt von den Recipes definiert und sie werden dem Node-Objekte zugewiesen.
|
||||||
|
Die Attributes stehen somit allen Recipes zu Verfügung können und können an
|
||||||
|
verschiedenen Stellen überschrieben werden. In Puppet 3 wurde diese Trennung
|
||||||
|
von Code und organsationsspezifischen Daten durch die Erweiterung \emph{Hiera}
|
||||||
|
ebenfalls eingeführt. Class-Parameter werden automatisch in der hieradb gesucht
|
||||||
|
und gegebenfalls überschrieben. Hiera-Attribute können spezifisch für einzelne
|
||||||
|
Nodes gesetzt werden oder für die gesamte Organisation. In älteren Versionen von
|
||||||
|
\emph{Puppet} wurden Attributes und Module für die einzelnen Nodes in der
|
||||||
|
zentralen \emph{site.pp}-Manifest verwaltet. Hiera ersetzt die \emph{site.pp}
|
||||||
|
weitest gehend. Durch die Funktion \emph{hiera\_include} können Classes im
|
||||||
|
Hiera-Backend gesetzt werden (ähnlich der Run-List in Chef).
|
||||||
|
|
||||||
|
Resources heissen in Puppet Types. Puppet liefert wie Chef eine Reihe von
|
||||||
Resources/Types, die Core-Types. Wie auch in Chef können Types in Puppet mehrere
|
Resources/Types, die Core-Types. Wie auch in Chef können Types in Puppet mehrere
|
||||||
plattformspezifische Provider besitzen. Es ist möglich eigene Types zu
|
plattformspezifische Provider besitzen. Es ist möglich eigene Types zu
|
||||||
definieren, auch Custom-Types genannt (Ähnlich LRWP in Chef). Die
|
definieren, auch Custom-Types genannt (Ähnlich LRWP in Chef). Die
|
||||||
Implementierung der Types/Provider erfolgt in Ruby im Verzeichnis
|
Implementierung der Types/Provider erfolgt in Ruby im Verzeichnis
|
||||||
\emph{lib/puppet}. Die Zustände eine Resources können in Puppet über das
|
\emph{lib/puppet}. Die Zustände einer Resource können in Puppet über das
|
||||||
Schlüsselwort \emph{ensure} festgelegt werden (vergleichbar mit \emph{action}
|
Setzen des Parameters \emph{ensure} festgelegt werden (vergleichbar mit \emph{action} in
|
||||||
Chef).
|
Chef).
|
||||||
|
|
||||||
%- Definition
|
Ein anderes häufig genutztes Pattern, um Resources zu gruppieren, ist die auch
|
||||||
%- Parameters
|
schon aus Chef bekannte \emph{Definition}. Diese kann im Gegensatz zum
|
||||||
%- Trennung von Daten/Code
|
Custom-Type auch direkt in der Puppet-Sprache mit Schlüsselwort \emph{define}
|
||||||
%- Chef-Server/Puppetd-Master (masterless-Mode, Erlang)
|
definiert werden.
|
||||||
%- Templates
|
|
||||||
%- Plattform-Unterstützung
|
|
||||||
|
|
||||||
|
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
|
||||||
|
existiert fällt Chef auf \emph{templates/default} zurück.
|
||||||
|
|
||||||
%- Während die Regeln und Beschreibung in Chef standartmäßig in der Reihenfolge abgearbeitet
|
Ein wesentlicher Unterschied zwischen Puppet und Chef ist die Reihenfolge der
|
||||||
% wird in der sie geladen werden, sortiert Puppet diese um. In beiden kann die
|
Ausführung von Resources. Chef überprüft die Resources in der Reihenfolge, in
|
||||||
% Reihenfolge durch Spezifikation von Abhängigkeiten umsortiert werden (Später
|
der sie in der Run-List und in den Recipes geladen werden. Puppet sortiert
|
||||||
% ein Beispiel)
|
Resources um. Bei Puppet deswegen spricht man von modelbasiertem
|
||||||
%
|
Konfigurationsmanagment. Da manche Resources voneinander kann durch die Angabe
|
||||||
%Note:
|
von Abhängigkeiten mittels der Parameter \emph{before} und \emph{require}
|
||||||
%- Puppet: eigene Sprache -> komplexere Codebasis
|
festgelegt werden. Über die Parameter \emph{notify} und \emph{subscribe} können
|
||||||
%- Chef Enterprise vs Puppet Enterprise: Hinter beiden Projekten stehen Firmen, Weiterentwicklung des Produkt, bieten Support und Hosting an
|
darüber hinaus Resourcen aktualisiert werden, wenn sich eine Abhängigkeit
|
||||||
%- Resume: Ähnliche Projekte, lösen das gleiche Problem auf unterschiedliche
|
geändert hat (z.B. kann ein Dienst neugestartet werden, wenn sich die dazu
|
||||||
% Weise
|
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
|
||||||
|
(vergleichbar mit Chef-Solo). Das Äquivalent zu Chef-Server ist der
|
||||||
|
Puppetmaster, zu welchem sich der Client \emph{Puppetd} verbindet und mittels
|
||||||
|
SSL-Zertifikaten authentifiziert. In der Standarteinstellung setzt Puppetmaster
|
||||||
|
auf den verhältnismäßig einfachen Webserver WEBrick. Dieser skaliert allerdings
|
||||||
|
nicht über einen CPU-Core. Für größere Installationen wird Passenger oder
|
||||||
|
Mongrel als Applikationsserver empfohlen mit Nginx als Load-Balancer. Ein
|
||||||
|
anderer beliebter Ansatz zum Skalieren größerer Cluster ist das Verwalten der
|
||||||
|
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.
|
||||||
|
|
||||||
|
Zu den von offiziell von Chef unterstützt Plattformen gehören Windows, MacOS X,
|
||||||
|
verschiedene Linuxderivate (Debian, Ubuntu, Redhat...) 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
|
||||||
|
|
||||||
% vim: set spell spelllang=de_de
|
% vim: set spell spelllang=de_de
|
||||||
|
@ -37,3 +37,11 @@
|
|||||||
year = {2014},
|
year = {2014},
|
||||||
month = {März}
|
month = {März}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@misc{chefscale,
|
||||||
|
author = {chef},
|
||||||
|
title = {Opscode Unleashes New Generation of Chef},
|
||||||
|
url = {http://www.getchef.com/press-releases/opscode-unleashes-new-generation-of-chef/},
|
||||||
|
year = {2013},
|
||||||
|
month = {Februar}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user