\subsection{Git-Server} \label{sub:git_server} Zur Verwaltung von \emph{Git} haben wir uns für \href{https://github.com/sitaramc/gitolite}{Gitolite} entschieden. Gitolite erlaubt eine Verwaltung von Zugriffsrechten auf Repositories. Die Authentifizierung erfolgt dabei über SSH-Keys. Hier für wird ein Nutzer mit dem Namen \emph{git} eingerichtet: \shellcmd{useradd -m -U -r -s /bin/bash -d /srv/git git} Für die initiale Einrichtung wird der eigene SSH-Schlüssel zu gitolite hinzugefügt: \shellcmd{gitolite setup -pk id\_rsa.pub} Nun kann die eigentliche Konfiguration per git heruntergeladen werden: \shellcmd{git clone git@141.76.90.104:gitolite-admin.git} Wir legten in dieser Konfiguration das Repository \emph{lctp} an und gaben allen Benutzern Zugriff darauf. Die gitolite-Konfiguration befindet sich als Git-Submodule im Verzeichnis \emph{aufgabe2.4/gitolite-admin}. Das lctp-Repository wiederum lässt sich mit folgendem Befehl klonen: \shellcmd{git clone git@141.76.90.104:lctp.git lctp-gruppe4} \shellcmd{cd lctp-gruppe4 \&\& git submodule init \&\& git submodule update} \subsubsection{Etckeeper} Um die Konfiguration in \emph{/etc } versionierbar und damit nachvollziehbar zu machen installierten wir \emph{Etckeeper}: \shellcmd{yaourt -S etckeeper \&\& sudo etckeeper init} \shellcmd{cd /etc/.git \&\& sudo git remote add git@zotac0:lctp.git} Etckeeper legt ein \emph{git}-Repository in \emph{/etc/.git} an und erstellt Commits bei Änderungen in \emph{/etc}. Um die Konfiguration vom Bericht zu trennen, haben wir uns entschieden, \texttt{etckeeper} in ein dediziertes Repository (\emph{logs}) pushen und als Submodule im \emph{lctp}-Repository einzubinden: \shellcmd{sudo git remote add origin git@zotac0:etckeeper.git} Im Gegensatz zu anderen Paketmanagern wie \emph{apt} auf Debian, existieren in \emph{pacman} (\ref{sec:pacman}) keine Hooks. Um dennoch nach Systemaktualisierungen oder Paketinstallationen automatisch die neue Konfiguration zu commiten, haben wir jeweils ein \href{https://gist.github.com/Mic92/7250403}{Wrapper-Script} für \emph{Pacman} und \emph{Yaourt} geschrieben und beide in den Pfad \emph{/usr/local/bin} abgelegt. Da in der Shell \emph{/usr/local/bin} für gewöhnlich eine höhere Priorität besitzt als \texttt{/usr/bin}, werden Programme in diesem Verzeichnis vorrangig ausgeführt. Die Wrapper befinden sich in \emph{aufgabe2.4/yaourt} sowie in \emph{aufgabe2.4/pacman}. Darüber hinaus haben wir das Shell-Script für tägliche automatische Commits, welches sich im \href{https://github.com/joeyh/etckeeper/blob/master/debian/cron.daily}{Git-Repository} (Stand 07.11.2013) von \emph{etckeeper} liegt, als Cron-Job eingerichtet (siehe \emph{aufgabe2.4/cron.daily/etckeeper}). \subsubsection{Logs in git} Archlinux setzt in der Standard-Installation \emph{Journald} als Logging-Daemon ein. Im Unterschied zu herkömmlichen Syslog-Varianten speichert Journald in einem eigenen Binärformat ab. Dieses Dateiformat eignet sich aus offensichtlichen Gründen nicht um mithilfe von git verwaltet zu werden. Deswegen haben wir zusätzlich \emph{Syslog-ng} installiert und \emph{Journald} so konfiguriert, das es ebenfalls in das syslog schreibt (siehe \emph{aufgabe2.4/journald.conf}). Für tägliche commits haben wir hierfür das Shell-Script \emph{git-commit-log} nach \emph{/etc/cron.daily/} installiert (siehe \emph{aufgabe2.4/cron.daily/git-commit-log}). Dieses lädt die Log-Dateien in das logs-Repository hoch. Es ist als Submodule im Verzeichnis \emph{logs} im lctp-Repository eingebunden.