chef: Installationsanleitung
This commit is contained in:
parent
67b5e14d38
commit
15b4587fe4
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user