diff --git a/bericht/bericht.tex b/bericht/bericht.tex index 6421c08..94d197b 100644 --- a/bericht/bericht.tex +++ b/bericht/bericht.tex @@ -23,6 +23,29 @@ \usepackage[utf8]{inputenc} \usepackage{ucs} +% directory listing im Chefabschnitt +\usepackage{chngcntr} +\newcounter{treeline} + +\newcommand{\treeroot}[1]{% Title + \node[above] at (0,0) {#1};% + \setcounter{treeline}{0} +} + +\newcommand{\treeentry}[2]{% Title, Level + \draw[->] (#2-1,-\value{treeline}/2) -- (#2-1,-\value{treeline}/2-0.5) -- + (#2+0.5,-\value{treeline}/2-0.5) node[right] {#1}; + \stepcounter{treeline} +} + +\newcommand{\altentry}[2]{% Title, Level + \draw[->] (#2-1,-\value{treeline}/2) -- (#2-1,-\value{treeline}/2-0.5) -- + (#2+0.5,-\value{treeline}/2-0.5) node[right] {#1}; + \foreach \x in {1,...,#2} + { \draw (\x-1,-\value{treeline}/2) -- (\x-1,-\value{treeline}/2-0.5); + } + \stepcounter{treeline} +} \RequirePackage{mymacros} @@ -44,7 +67,6 @@ \title{LCTP – Praktikum Wintersemester 2013 / 2014} \begin{document} - \input{hardware} \input{cluster-layout} diff --git a/bericht/chef/chef-comparison.tex b/bericht/chef/chef-comparison.tex index 673a641..3a7a29f 100644 --- a/bericht/chef/chef-comparison.tex +++ b/bericht/chef/chef-comparison.tex @@ -47,38 +47,38 @@ Es gibt mehrere Möglichkeiten \emph{Chef} zu betreiben: Hier ist die Ordnerstruktur des Cookbook \href{https://github.com/opscode-cookbooks/apt}{apt} dargestellt: -\begin{lstlisting} -> apt-2.3.4/ - > attributes/ - default.rb - > files/ - > default/ - apt-proxy-v2.conf - > libraries/ - helpers.rb - network.rb - > providers/ - preference.rb - repository.rb - > recipes/ - cacher-client.rb - cacher-ng.rb - default.rb - > resources/ - preference.rb - repository.rb - > templates/ - > debian-6.0/ - > default/ - 01proxy.erb - acng.conf.erb - > ubuntu-10.04/ - acng.conf.erb - CHANGELOG.md - metadata.json - metadata.rb - README.md -\end{lstlisting} +\begin{tikzpicture} +\treeroot{apt-2.3.4} +\altentry{attributes}{1} + \altentry{default.rb}{2} +\altentry{files}{1} + \altentry{default}{2} + \treeentry{apt-proxy-v2.conf}{3} +\altentry{libraries}{1} + \altentry{helpers.rb}{2} + \altentry{network.rb}{2} +\altentry{providers}{1} + \altentry{preference.rb}{2} + \altentry{repository.rb}{2} +\altentry{recipes}{1} + \altentry{cacher-client.rb}{2} + \altentry{cacher-ng.rb}{2} + \altentry{default.rb}{2} +\altentry{resources}{1} + \altentry{preference.rb}{2} + \altentry{repository.rb}{2} +\altentry{templates}{1} + \altentry{debian-6.0}{2} + \altentry{default}{2} + \altentry{01proxy.erb}{3} + \altentry{acng.conf.erb}{3} + \altentry{ubuntu-10.04}{2} + \treeentry{acng.conf.erb}{3} +\altentry{CHANGELOG}{1} +\altentry{metadata.json}{1} +\altentry{metadata.rb}{1} +\altentry{README.md}{1} +\end{tikzpicture} Die Verzeichnisnamen sind fest vorgeben. Jedes Verzeichnis hat seine eigene Funktion. Dies hat den Vorteil, das man sich schnell in neuen Cookbooks zurecht @@ -124,6 +124,25 @@ findet. Hier nochmal die einzelnen Verzeichnisse im Überblick: eine Beschreibung sowie Abhängigkeiten zu anderen Cookbooks angeben werden. \end{description} +Beispiel ERB-Template: +\begin{lstlisting} + Diese Zeile wird beim Render ohne Aenderung uebernommen + <%# Ein Kommentar%> + + Diese Node heisst: <%= @node.name %> + + <% if node[:platform] == "ubuntu" -%> <%# Bedingte Anweisung %> + Diese Zeile erscheint auf Ubuntu-basierten Nodes. + <% else %> + Diese Zeile erscheint auf nicht Ubuntu-basierten Nodes. + <% end -%> + + <%# Listet in einer Schleife alle Blockdevices der Node auf %> + <% @node.block_device.each do |block_device, attributes| %> + <%= block_device %>: <%= attributes.join(", ") %> + <% end %> +\end{lstlisting} + \textbf{Ablauf einer Provisonierung} \label{ablauf_einer_provisionierung} diff --git a/bericht/chef/chef-tests.tex b/bericht/chef/chef-tests.tex index 0609c53..ea0064b 100644 --- a/bericht/chef/chef-tests.tex +++ b/bericht/chef/chef-tests.tex @@ -48,7 +48,7 @@ unerlässlich. Der folgende Test wurde aus dem NTP-Cookbook (~\ref{ssub:einrichtung-der-netzwerkdienste}) entnommen. -\begin{lstlisting} +\begin{lstlisting}[language=Ruby] require_relative '../spec_helper' describe 'ntp::default' do @@ -102,7 +102,7 @@ werden. Minitest Handler durchsucht beim Durchlauf in jedem anderen cookbook, in den Unterordnern in \emph{files/} nach dem Verzeichnis \emph{test} und lädt alle Tests aus diesem Verzeichnis. Über die Beschreibungszeile: -\begin{lstlisting} +\begin{lstlisting}[language=Ruby] describe_recipe "ntp::default" do # #... end @@ -115,7 +115,7 @@ ebenfalls ausgeführt. Minitest Handler erweitert Rspec um nützliche Methoden u den Status des Systems zu überprüfen. Hier ein Beispiel aus dem bind cookbook, welches in Abschnitt~\ref{ssub:einrichtung-der-netzwerkdienste} erwähnt wurde: -\begin{lstlisting} +\begin{lstlisting}[language=Ruby] describe_recipe 'bind::default' do it "starts the named daemon" do service("bind9").must_be_running