chef: Installationsanleitung

This commit is contained in:
Jörg Thalheim 2014-03-23 22:49:47 +01:00
parent 67b5e14d38
commit 15b4587fe4

View File

@ -2,24 +2,70 @@
\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}{Vagrant} verwendet. Dies ein Programm um auf \href{http://vagrantup.com}{Vagrant} verwendet. Dies ein Programm um auf der
der Basis von Virtualbox und anderen Virtualisierungslösungen schnell und 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 bietet Optionen, mit
eingestellt werden, mit welchen Einstellungen neue virtuelle Maschinen welchen Einstellungen neue virtuelle Maschinen provisioniert werden sollen. Zum
provisioniert werden sollen. Zum Einsatz kam das Betriebssystem Ubuntu 12.04 Einsatz kam das Betriebssystem Ubuntu in der Version 12.04. Das Basisimage
LTS. Das Basisimage hierfür wurde von \emph{opscode}, der Firma hinter Chef, hierfür wurde von \emph{Opscode}, der Firma hinter Chef, bereitgestellt. Es
bereitgestellt. Es wurde ein Netzwerkinterface konfiguriert für die wurde ein Netzwerkinterface konfiguriert für die Kommunikation mit Vagrant und
Kommunikation mit Vagrant und ein weiteres Internes für ein virtuelles Netzwerk ein weiteres Internes für ein virtuelles Netzwerk zwischen den VMs zum Betreiben
zwischen den VMs zum Betreiben der Netzwerkdienste. Vagrant bietet für diese der Netzwerkdienste. Vagrant bietet für diese erweiterten Einstellungen keine
erweiterten Einstellungen keine Optioen. Um diese dennoch zu übernehmen, waren Optionen. Um diese dennoch zu übernehmen, waren spezielle
spezielle Kommandozeilenargumente an den Befehl \emph{VBoxManage} nötig, welches Kommandozeilenargumente an den Befehl \emph{VBoxManage} nötig, welches von
von Vagrant für Virtualbox genutzt wird. Dies schränkt Nutzung allerdings auf Vagrant für Virtualbox genutzt wird. Dies schränkt Nutzung allerdings auf die
die Visualisierung Virtualbox ein. Vagrant bietet die Möglichkeit neben Visualisierung Virtualbox ein. Vagrant bietet die Möglichkeit neben
Provisionierungsystemen auch Shellskripte auszuführen. Diese wurde genutzt um Provisionierungsystemen auch Shellskripte auszuführen. Diese wurde genutzt um
Chef auf die zum damaligen Zeitpunkt aktuellste Version 11.8.2 upzudaten. Chef auf die zum damaligen Zeitpunkt aktuellste Version 11.8.2 upzudaten.
Desweiteren wird Ruby auf dem Host benötigt um beispielsweise die Tests
ausführen zu können. Auf Unix-basierten Systemen kann dies mit dem Befehl:
\shellcmd{curl -sSL https://get.rvm.io | bash -s stable}
installiert werden. Auf Windows kann der
\href{http://rubyinstaller.org/}{RubyInstaller} genutzt werden. Um die nötigen
Abhängigkeiten zu installieren, müssen folgende Befehle ausgeführt im
Projektverzeichnis werden:
\shellcmd{gem install bundler}
\shellcmd{bundle install}
Zur Verwaltung der externen und internen Cookbooks wurde die
Abhängigkeitsverwaltung \href{http://berkshelf.com}{Berkshelf} verwendet. Bei
diesem werden die zu ladenden Cookbooks und die gewünschte Version in einer
Datei namens Berkssfile angegeben (vergleichbar mit
\href{http://bundler.io/}{Gemfile} in Ruby). Berkshelf unterstützt dabei
verschiedene Quellen (per Api von der Communityseite von Opscode, Git, lokal)
und kann Abhängigkeiten zu anderen Cookbooks auflösen. Um die Cookbooks initial
zu laden muss der Befehl:
\shellcmd{berks install}
im Projektverzeichnis ausgeführt werden.
Für das Zusammenspiel mit Vagrant gibt es das Plugin
\href{https://github.com/berkshelf/vagrant-berkshelf}{vagrant-berkshelf}, so
dass die von Berkshelf verwalten Cookbooks auch in Vagrant zur Verfügung stehen.
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
vielen Images vorhanden, die es für Vagrant gibt. Allerdings muss die
Virtualboxversion des Host mit dem der VM übereinstimmen. Abhilfe schafft das
Vagrantplugin
\href{https://github.com/dotless-de/vagrant-vbguest}{vagrant-vbguest}. Dieses
überprüft beim Start die Versionen und installiert gegeben falls eine Andere in
der VM.
Beide Plugins werden diesen Befehlen installiert:
\shellcmd{vagrant plugin install vagrant-vbguest}
\shellcmd{vagrant plugin install vagrant-berkshelf}
Gestartet wird die VM mit dem Befehl: Gestartet wird die VM mit dem Befehl:
\shellcmd{vagrant up} \shellcmd{vagrant up}
@ -29,13 +75,6 @@ folgenden Befehl gestartet werden:
\shellcmd{vagrant provision} \shellcmd{vagrant provision}
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
vielen Images vorhanden, die es für Vagrant gibt. Allerdings muss die
Virtualboxversion des Host mit dem der VM übereinstimmen. Abhilfe schafft das
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.
Als Netzwerkdienste wurden die Protokolle DHCP, DNS und NTP gewählt. Die Als Netzwerkdienste wurden die Protokolle DHCP, DNS und NTP gewählt. Die
VMs wurden in 2 Gruppen geteilt, \emph{Headnodes}, die die genannten Dienste anbieten VMs wurden in 2 Gruppen geteilt, \emph{Headnodes}, die die genannten Dienste anbieten
und \emph{Computenodes}. Die Computenodes fordern auf dem internen Netzwerk per und \emph{Computenodes}. Die Computenodes fordern auf dem internen Netzwerk per
@ -88,14 +127,4 @@ Es wurden folgende externen Cookbooks verwendet:
nach der Provisionierung aus (siehe~\ref{minitest_handler}) nach der Provisionierung aus (siehe~\ref{minitest_handler})
\end{description} \end{description}
Zur Verwaltung der externen und internen Cookbooks wurde die
Abhängigkeitsverwaltung \href{http://berkshelf.com}{Berkshelf} verwendet. Bei
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
Abhängigkeiten aus verschiedenen Quellen herunter. (per Api von der
Communityseite von Opscode, git, lokal) Für das Zusammenspiel mit Vagrant gibt
es das Plugin
\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