From 15b4587fe461c2c4df88d343585951d9c5f5ceb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Sun, 23 Mar 2014 22:49:47 +0100 Subject: [PATCH] chef: Installationsanleitung --- bericht/chef/chef-services.tex | 91 ++++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 31 deletions(-) diff --git a/bericht/chef/chef-services.tex b/bericht/chef/chef-services.tex index e4d5d18..e58838d 100644 --- a/bericht/chef/chef-services.tex +++ b/bericht/chef/chef-services.tex @@ -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