69 lines
3.4 KiB
TeX
69 lines
3.4 KiB
TeX
\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. Dies erlaubt eine Verwaltung von Zugriffsrechten auf Repositories.
|
|
Die Authentifizierung erfolgt dabei über SSH-Keys. Hier für wird ein \emph{git} Nutzer 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 clonen:
|
|
|
|
\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}
|
|
|
|
Dieses 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}
|
|
|
|
Anders als bei 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 einen
|
|
\href{https://gist.github.com/Mic92/7250403}{Wrapper-Script} für \emph{pacman}
|
|
und \emph{yaourt} geschrieben und diese \emph{/usr/local/bin} abgelegt. Da in der
|
|
Shell \emph{/usr/local/bin} für gewöhnlich eine höhere Priorität hat 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 im
|
|
\href{https://github.com/joeyh/etckeeper/blob/master/debian/cron.daily}{Git-Repository}
|
|
(Stand 07.11.2013)
|
|
von \emph{etckeeper} liegt, als cronjob installiert (siehe
|
|
\emph{aufgabe2.4/cron.daily/etckeeper}).
|
|
|
|
\subsubsection{Logs in git}
|
|
|
|
Arch Linux setzt in der Standard-Installation \emph{journald} als Logging-Daemon ein. Dieses benutzt im Unterschied zu herkömmlichen Syslog-Varianten ein Binärformat zum Speichern.
|
|
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 dieses 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 pusht die Log-Dateien in das
|
|
logs-Repository. Es ist als Submodule im Verzeichnis \emph{logs} im
|
|
lctp-Repository eingebunden.
|