chef: weitere TODOs erledigt
This commit is contained in:
parent
dc6c68af63
commit
67b5e14d38
@ -44,7 +44,8 @@ Es gibt mehrere Möglichkeiten \emph{Chef} zu betreiben:
|
|||||||
\textbf{Aufbau eines Cookbook}
|
\textbf{Aufbau eines Cookbook}
|
||||||
\label{aufbau_eines_cookbook}
|
\label{aufbau_eines_cookbook}
|
||||||
|
|
||||||
Hier ist die Ordnerstruktur des Cookbook apt (TODO Link) dargestellt:
|
Hier ist die Ordnerstruktur des Cookbook
|
||||||
|
\href{https://github.com/opscode-cookbooks/apt}{apt} dargestellt:
|
||||||
|
|
||||||
\begin{lstlisting}
|
\begin{lstlisting}
|
||||||
> apt-2.3.4/
|
> apt-2.3.4/
|
||||||
@ -138,16 +139,16 @@ dieser stehen beispielsweise Informationen mit welchen Chef-Server der Client
|
|||||||
verbinden soll, an welcher Stelle temporäre Daten gespeichert werden soll und
|
verbinden soll, an welcher Stelle temporäre Daten gespeichert werden soll und
|
||||||
der Name der Node. Letzteres ist wichtig um die Node richtig von Chef einordnen
|
der Name der Node. Letzteres ist wichtig um die Node richtig von Chef einordnen
|
||||||
zu können und die richtigen Einstellungen zuzuweisen. Alternativ kann der Name
|
zu können und die richtigen Einstellungen zuzuweisen. Alternativ kann der Name
|
||||||
auch von der der Bibliothek \emph{Ohai} (TODO - Link) gesetzt werden, in dem auf
|
auch von der der Bibliothek \href{http://docs.opscode.com/ohai.html}{Ohai}
|
||||||
den Hostnamen oder der FQDN (Fully Qualified Domain Name) zurück gegriffen wird.
|
gesetzt werden, in dem auf den Hostnamen oder der FQDN (Fully Qualified Domain
|
||||||
Ohai sammelt noch andere systemrelevante Daten wie Details über
|
Name) zurück gegriffen wird. Ohai sammelt noch andere systemrelevante Daten wie
|
||||||
Hardwarekomponenten (Anzahl der CPUs, Größe und Art des RAMs, Netzwerkanbindung,
|
Details über Hardwarekomponenten (Anzahl der CPUs, Größe und Art des RAMs,
|
||||||
Festplatten/SSDs, \dots), Informationen über die Plattform (Art des
|
Netzwerkanbindung, Festplatten/SSDs, \dots), Informationen über die Plattform
|
||||||
Betriebssystems und Version, installierte Software) und die laufenden Prozesse.
|
(Art des Betriebssystems und Version, installierte Software) und die laufenden
|
||||||
Diese Informationen sind durch eigene Ohai-Plugins erweiterbar und können dann
|
Prozesse. Diese Informationen sind durch eigene Ohai-Plugins erweiterbar und
|
||||||
im Provisionierungsprozess genutzt werden um weitere Entscheidungen zu treffen.
|
können dann im Provisionierungsprozess genutzt werden um weitere Entscheidungen
|
||||||
Sie sind darüber hinaus auch auf dem Server gespeichert und für andere Clients
|
zu treffen. Sie sind darüber hinaus auch auf dem Server gespeichert und für
|
||||||
abrufbar.
|
andere Clients abrufbar.
|
||||||
|
|
||||||
Nach dem alle Einstellungen eingelesen sind, folgte im Falle von Chef-Server,
|
Nach dem alle Einstellungen eingelesen sind, folgte im Falle von Chef-Server,
|
||||||
die Authentifizierung mit diesem über den vorher auf der Node abgelegten
|
die Authentifizierung mit diesem über den vorher auf der Node abgelegten
|
||||||
@ -191,4 +192,5 @@ Monitoringssystem oder per Email verschicken. In letzten Abschnitt
|
|||||||
\textbf{Vergleich mit puppet}
|
\textbf{Vergleich mit puppet}
|
||||||
\label{vergleich_mit_puppet}
|
\label{vergleich_mit_puppet}
|
||||||
|
|
||||||
|
|
||||||
% vim: set spell spelllang=de_de
|
% vim: set spell spelllang=de_de
|
||||||
|
@ -2,20 +2,23 @@
|
|||||||
\label{ssub:einrichtung-der-netzwerkdienste}
|
\label{ssub:einrichtung-der-netzwerkdienste}
|
||||||
|
|
||||||
Für die Provisionierung der Netzwerkdienste wurde
|
Für die Provisionierung der Netzwerkdienste wurde
|
||||||
\href{http://vagrantup.com}{\emph{vagrant}} verwendet. Dies ein Programm um auf
|
\href{http://vagrantup.com}{Vagrant} verwendet. Dies ein Programm um auf
|
||||||
der Basis von Virtualbox und anderen Virtualisierungslösungen schnell und
|
der Basis von Virtualbox und anderen Virtualisierungslösungen schnell und
|
||||||
reproduzierbar virtuelle Maschinen zu starten. Die Einstellungen hierfür werden
|
reproduzierbar virtuelle Maschinen zu starten. Die Einstellungen hierfür werden
|
||||||
in der datei \emph{Vagrantfile} geschrieben, welches vagrant beim Start
|
in der datei \emph{Vagrantfile} geschrieben, welches Vagrant beim Start
|
||||||
einliest. Vagrant bietet eine gute Integration für Chef. Es kann direkt
|
einliest. Vagrant bietet eine gute Integration für Chef. Es kann direkt
|
||||||
eingestellt werden, mit welchen Einstellungen neue virtuelle Maschinen
|
eingestellt werden, mit welchen Einstellungen neue virtuelle Maschinen
|
||||||
provisioniert werden sollen. Zum Einsatz kam das Betriebssystem Ubuntu 12.04
|
provisioniert werden sollen. Zum Einsatz kam das Betriebssystem Ubuntu 12.04
|
||||||
LTS. Das Basisimage hierfür wurde von \emph{opscode}, der Firma hinter Chef,
|
LTS. Das Basisimage hierfür wurde von \emph{opscode}, der Firma hinter Chef,
|
||||||
bereitgestellt. Es wurde ein Netzwerkinterface konfiguriert für die
|
bereitgestellt. Es wurde ein Netzwerkinterface konfiguriert für die
|
||||||
Kommunikation mit vagrant und ein weiteres Internes für ein virtuelles Netzwerk
|
Kommunikation mit Vagrant und ein weiteres Internes für ein virtuelles Netzwerk
|
||||||
zwischen den VMs zum Betreiben der Netzwerkdienste. Vagrant bietet die
|
zwischen den VMs zum Betreiben der Netzwerkdienste. Vagrant bietet für diese
|
||||||
Möglichkeit neben Provisionierungsystemen auch Shellskripte auszuführen. Diese
|
erweiterten Einstellungen keine Optioen. Um diese dennoch zu übernehmen, waren
|
||||||
wurde genutzt um Chef auf die zum damaligen Zeitpunkt aktuellste Version 11.8.2
|
spezielle Kommandozeilenargumente an den Befehl \emph{VBoxManage} nötig, welches
|
||||||
upzudaten.
|
von Vagrant für Virtualbox genutzt wird. Dies schränkt Nutzung allerdings auf
|
||||||
|
die Visualisierung Virtualbox ein. Vagrant bietet die Möglichkeit neben
|
||||||
|
Provisionierungsystemen auch Shellskripte auszuführen. Diese wurde genutzt um
|
||||||
|
Chef auf die zum damaligen Zeitpunkt aktuellste Version 11.8.2 upzudaten.
|
||||||
|
|
||||||
Gestartet wird die VM mit dem Befehl:
|
Gestartet wird die VM mit dem Befehl:
|
||||||
|
|
||||||
@ -28,9 +31,9 @@ folgenden Befehl gestartet werden:
|
|||||||
|
|
||||||
Für bestimmte Funktionen wie geteilte Ordner zwischen VM und Host müssen die
|
Für bestimmte Funktionen wie geteilte Ordner zwischen VM und Host müssen die
|
||||||
\emph{virtualbox-client-modules} in der VM installiert sein. Diese sind zwar in
|
\emph{virtualbox-client-modules} in der VM installiert sein. Diese sind zwar in
|
||||||
vielen Images vorhanden, die es für vagrant gibt. Allerdings muss die
|
vielen Images vorhanden, die es für Vagrant gibt. Allerdings muss die
|
||||||
Virtualboxversion des Host mit dem der VM übereinstimmen. Abhilfe schafft das
|
Virtualboxversion des Host mit dem der VM übereinstimmen. Abhilfe schafft das
|
||||||
Vagrantplugin \emph{vagrant-vbguest} (TODO link). Dieses überprüft beim
|
Vagrantplugin \href{https://github.com/dotless-de/vagrant-vbguest}{vagrant-vbguest}. Dieses überprüft beim
|
||||||
Start die Versionen und installiert gegebenfalls eine Andere in der VM.
|
Start die Versionen und installiert gegebenfalls eine Andere in der VM.
|
||||||
|
|
||||||
Als Netzwerkdienste wurden die Protokolle DHCP, DNS und NTP gewählt. Die
|
Als Netzwerkdienste wurden die Protokolle DHCP, DNS und NTP gewählt. Die
|
||||||
@ -55,14 +58,14 @@ Für das Deployment wurden fünf Cookbooks geschrieben:
|
|||||||
Dieses Cookbook richtet den ISC DHCP-Server ein. Neben der Zuordnung von
|
Dieses Cookbook richtet den ISC DHCP-Server ein. Neben der Zuordnung von
|
||||||
festen IP-Adressen zu Nodes, kann ein DNS-Server und ein NTP-Server
|
festen IP-Adressen zu Nodes, kann ein DNS-Server und ein NTP-Server
|
||||||
festgelegt werden.
|
festgelegt werden.
|
||||||
\item[lctp-network]
|
\item[lctp-network] Dieses Cookbook ist ein Wrappercoobook um das
|
||||||
Dieses Cookbook ist ein Wrappercoobook um das network\_interfaces
|
\href{https://github.com/redguide/network_interfaces}{network\_interfaces}
|
||||||
(TODO link) Cookbook. Wrappercookbook werden häufig dazu benutzt um bestehende
|
Cookbook. Wrappercookbook werden häufig dazu benutzt um bestehende Cookbooks
|
||||||
Cookbooks aus anderen Quellen um Funktionalität zu erweitern. In diesem Fall
|
aus anderen Quellen um Funktionalität zu erweitern. In diesem Fall aktiviert
|
||||||
aktiviert das Cookbook für die Computenodes dhcp auf dem interen
|
das Cookbook für die Computenodes dhcp auf dem interen Netzwerkinterface.
|
||||||
Netzwerkinterface. Auf den Headnodes wird eine statische IPadresse gesetzt,
|
Auf den Headnodes wird eine statische IPadresse gesetzt, der DNS-Server auf
|
||||||
der DNS-Server auf localhost festgelegt und Ipforwarding sowie
|
localhost festgelegt und Ipforwarding sowie Masquerading via iptables für
|
||||||
Masquerading via iptables für den Routerbetrieb aktiviert.
|
den Routerbetrieb aktiviert.
|
||||||
\item[ntp]
|
\item[ntp]
|
||||||
Dieses Cookbook richtet den NTP-Deamon ein, welcher die Zeit zwischen den
|
Dieses Cookbook richtet den NTP-Deamon ein, welcher die Zeit zwischen den
|
||||||
einzelnen Knoten synchron halten soll.
|
einzelnen Knoten synchron halten soll.
|
||||||
@ -82,7 +85,7 @@ Es wurden folgende externen Cookbooks verwendet:
|
|||||||
\item[network\_interfaces] verwaltet Debians Netzkonfiguration
|
\item[network\_interfaces] verwaltet Debians Netzkonfiguration
|
||||||
/etc/network/interfaces
|
/etc/network/interfaces
|
||||||
\item[minitest-handler] Sammelt alle Tests in den Cookbooks führt diese
|
\item[minitest-handler] Sammelt alle Tests in den Cookbooks führt diese
|
||||||
nach der Provisionierung aus (siehe~\ref{chef_minitest_handler})
|
nach der Provisionierung aus (siehe~\ref{minitest_handler})
|
||||||
\end{description}
|
\end{description}
|
||||||
|
|
||||||
Zur Verwaltung der externen und internen Cookbooks wurde die
|
Zur Verwaltung der externen und internen Cookbooks wurde die
|
||||||
@ -90,8 +93,9 @@ Abhängigkeitsverwaltung \href{http://berkshelf.com}{Berkshelf} verwendet. Bei
|
|||||||
diesem gibt man die Abhängigkeiten und die gewünschte Version in einer Datei
|
diesem gibt man die Abhängigkeiten und die gewünschte Version in einer Datei
|
||||||
namens Berkssfile an (vergleichbar mit Gemfile in Ruby). Berkshelf lädt diese
|
namens Berkssfile an (vergleichbar mit Gemfile in Ruby). Berkshelf lädt diese
|
||||||
Abhängigkeiten aus verschiedenen Quellen herunter. (per Api von der
|
Abhängigkeiten aus verschiedenen Quellen herunter. (per Api von der
|
||||||
Communityseite von Opscode, git, lokal) Für das Zusammenspiel mit vagrant gibt
|
Communityseite von Opscode, git, lokal) Für das Zusammenspiel mit Vagrant gibt
|
||||||
es das Plugin vagrant-berkshelf (TODO link), so dass die von Berkshelf verwalten
|
es das Plugin
|
||||||
Cookbooks auch in vagrant zur Verfügung stehen.
|
\href{https://github.com/berkshelf/vagrant-berkshelf}{vagrant-berkshelf}, so
|
||||||
|
dass die von Berkshelf verwalten Cookbooks auch in Vagrant zur Verfügung stehen.
|
||||||
|
|
||||||
% vim: set spell spelllang=de_de
|
% vim: set spell spelllang=de_de
|
||||||
|
@ -23,14 +23,22 @@ man durch eigene Regeln erweitern.
|
|||||||
\textbf{Chefspec}
|
\textbf{Chefspec}
|
||||||
\label{chefspec}
|
\label{chefspec}
|
||||||
|
|
||||||
Chefspec baut auf das in Ruby verbreitete Testframework Rspec auf. Dies ist ein
|
Chefspec baut auf das in Ruby verbreitete Testframework \emph{Rspec} auf. Rspec
|
||||||
Vertreter des BDD (TODO mehr Infos zu BDD, Integration von Chefspec). Wie
|
ist ein Testframework, welches auf
|
||||||
bereits in Abschnitt ~\ref{durchlauf_eines_recipes} erwähnt, gibt es 2 Phasen
|
\href{http://dannorth.net/2012/05/31/bdd-is-like-tdd-if/}{Behavior Driven
|
||||||
bei der Ausführung von Chef. Bei Chefspec wird Provisionierungsprozess nur bis
|
Development} (kurz BDD) basiert. Hierbei werden die Testcases in derartiger Form
|
||||||
zur Convergingphase, durchlaufen. Die eigenen Tests überprüfen nur die erzeugten
|
auf geschrieben, dass sie sich selbst dokumentieren. Rspec kann aus den
|
||||||
Resourcen. Dies hat den Vorteil, das Tests sehr schnell durchlaufen werden, da
|
Beschreibungen Sätze bilden und so im Falle eines fehlgeschlagen Tests schnell
|
||||||
keine Änderungen an einem System vorgenommen werden müssen. Dies hat Vorteile
|
darüber Auskunft zu geben, was der Test getestet hat und wieso dieser
|
||||||
beim Entwickeln, weil man auf diese Weise schnell Feedback bekommt. Das
|
fehlgeschlagen ist. Chefspec erweitert dabei Rspec um die Möglichkeit Cookbooks
|
||||||
|
zu laden und stellt spezielle Matcher (Rspec-Terminologie für Assertions)
|
||||||
|
bereit, um diese zu testen.
|
||||||
|
Wie bereits in Abschnitt~\ref{ablauf_einer_provisionierung} erwähnt, gibt es 2
|
||||||
|
Phasen bei der Ausführung von Chef. Bei Chefspec wird Provisionierungsprozess
|
||||||
|
nur bis zur Convergingphase durchlaufen. Die eigenen Tests überprüfen nur die
|
||||||
|
erzeugten Resources. Dies hat den Vorteil, das Tests sehr schnell durchlaufen
|
||||||
|
werden, da keine Änderungen an einem System vorgenommen werden müssen. Dies hat
|
||||||
|
Vorteile beim Entwickeln, weil man auf diese Weise schnell Feedback bekommt. Das
|
||||||
Zusammenspiel mehrerer Cookbooks lässt sich dadurch gut testen. Außerdem
|
Zusammenspiel mehrerer Cookbooks lässt sich dadurch gut testen. Außerdem
|
||||||
ermöglicht es verschiedene Konfigurationen/Betriebssysteme durchzutesten, ohne
|
ermöglicht es verschiedene Konfigurationen/Betriebssysteme durchzutesten, ohne
|
||||||
das diese (zeit)aufwendig aufgesetzt werden müssen. Da Chefspec allerdings nicht
|
das diese (zeit)aufwendig aufgesetzt werden müssen. Da Chefspec allerdings nicht
|
||||||
@ -68,9 +76,14 @@ Die Tests werden mit dem Befehl \emph{rspec} ausgeführt. Wenn keine weiteren Ar
|
|||||||
angegeben sind, führt dieses Programm alle Dateien unterhalb des Ordners \emph{spec}
|
angegeben sind, führt dieses Programm alle Dateien unterhalb des Ordners \emph{spec}
|
||||||
aus, dessen Dateinamen auf \emph{\_spec.rb} enden.
|
aus, dessen Dateinamen auf \emph{\_spec.rb} enden.
|
||||||
|
|
||||||
Um alle drei obgenannten Testmethoden gleichzeitig ausführen zu lassen, gibt es
|
Um alle drei obgenannten Testmethoden gleichzeitig ausführen zu lassen, wurde
|
||||||
eine Rakefile (das in Ruby geschriebene Äquivalent zu GNU Make). Mithilfe des
|
ein Rakefile geschrieben. \href{http://rake.rubyforge.org/}{Rake} das in Ruby
|
||||||
Befehls: TODO
|
geschriebene Äquivalent zu Make, welches ein verbreitetes Buildprogramm auf
|
||||||
|
UNIX-Basierten Plattformen ist. Die Ausführung der Tests geschieht mit dem Befehl:
|
||||||
|
|
||||||
|
\shellcmd{rake test}
|
||||||
|
|
||||||
|
Dieser muss innerhalb Projektverzeichnis aufgerufen werden.
|
||||||
|
|
||||||
\textbf{Minitest Handler}
|
\textbf{Minitest Handler}
|
||||||
\label{minitest_handler}
|
\label{minitest_handler}
|
||||||
|
Loading…
Reference in New Issue
Block a user