chef: Installationsanleitung
This commit is contained in:
parent
67b5e14d38
commit
15b4587fe4
@ -2,24 +2,70 @@
|
||||
\label{ssub:einrichtung-der-netzwerkdienste}
|
||||
|
||||
Für die Provisionierung der Netzwerkdienste wurde
|
||||
\href{http://vagrantup.com}{Vagrant} verwendet. Dies ein Programm um auf
|
||||
der Basis von Virtualbox und anderen Virtualisierungslösungen schnell und
|
||||
\href{http://vagrantup.com}{Vagrant} verwendet. Dies ein Programm um auf der
|
||||
Basis von Virtualbox und anderen Virtualisierungslösungen schnell und
|
||||
reproduzierbar virtuelle Maschinen zu starten. Die Einstellungen hierfür werden
|
||||
in der datei \emph{Vagrantfile} geschrieben, welches Vagrant beim Start
|
||||
einliest. Vagrant bietet eine gute Integration für Chef. Es kann direkt
|
||||
eingestellt werden, mit welchen Einstellungen neue virtuelle Maschinen
|
||||
provisioniert werden sollen. Zum Einsatz kam das Betriebssystem Ubuntu 12.04
|
||||
LTS. Das Basisimage hierfür wurde von \emph{opscode}, der Firma hinter Chef,
|
||||
bereitgestellt. Es wurde ein Netzwerkinterface konfiguriert für die
|
||||
Kommunikation mit Vagrant und ein weiteres Internes für ein virtuelles Netzwerk
|
||||
zwischen den VMs zum Betreiben der Netzwerkdienste. Vagrant bietet für diese
|
||||
erweiterten Einstellungen keine Optioen. Um diese dennoch zu übernehmen, waren
|
||||
spezielle Kommandozeilenargumente an den Befehl \emph{VBoxManage} nötig, welches
|
||||
von Vagrant für Virtualbox genutzt wird. Dies schränkt Nutzung allerdings auf
|
||||
die Visualisierung Virtualbox ein. Vagrant bietet die Möglichkeit neben
|
||||
in der Datei \emph{Vagrantfile} geschrieben, welches Vagrant beim Start
|
||||
einliest. Vagrant bietet eine gute Integration für Chef. Es bietet Optionen, mit
|
||||
welchen Einstellungen neue virtuelle Maschinen provisioniert werden sollen. Zum
|
||||
Einsatz kam das Betriebssystem Ubuntu in der Version 12.04. Das Basisimage
|
||||
hierfür wurde von \emph{Opscode}, der Firma hinter Chef, bereitgestellt. Es
|
||||
wurde ein Netzwerkinterface konfiguriert für die Kommunikation mit Vagrant und
|
||||
ein weiteres Internes für ein virtuelles Netzwerk zwischen den VMs zum Betreiben
|
||||
der Netzwerkdienste. Vagrant bietet für diese erweiterten Einstellungen keine
|
||||
Optionen. Um diese dennoch zu übernehmen, waren spezielle
|
||||
Kommandozeilenargumente an den Befehl \emph{VBoxManage} nötig, welches 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.
|
||||
|
||||
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:
|
||||
|
||||
\shellcmd{vagrant up}
|
||||
@ -29,13 +75,6 @@ folgenden Befehl gestartet werden:
|
||||
|
||||
\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
|
||||
VMs wurden in 2 Gruppen geteilt, \emph{Headnodes}, die die genannten Dienste anbieten
|
||||
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})
|
||||
\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
|
||||
|
Loading…
Reference in New Issue
Block a user