2013-10-29 09:41:47 +00:00
\subsection { Git-Server}
2013-10-31 17:05:31 +00:00
\label { sub:git_ server}
Zur Verwaltung von { \tt Git} haben wir uns für \href { https://github.com/sitaramc/gitolite} { gitolite} entschieden. Dies erlaubt eine Verwaltung von Zugriffsrechten auf Repositories.
2013-11-07 12:34:31 +00:00
Die Authentifizierung erfolgt dabei über SSH-Keys. Hier für wird ein { \tt git} Nutzer eingerichtet:
2013-10-31 17:05:31 +00:00
\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:
2013-11-03 17:20:54 +00:00
\shellcmd { gitolite setup -pk id\_ rsa.pub}
2013-10-31 17:05:31 +00:00
Nun kann die eigentliche Konfiguration per git heruntergeladen werden:
2013-11-07 12:34:31 +00:00
\shellcmd { git clone git@141.76.90.104:gitolite-admin.git}
2013-10-31 17:05:31 +00:00
2013-11-07 12:34:31 +00:00
Wir legten in dieser Konfiguration das Repository { \tt lctp} an und gaben allen
Benutzern Zugriff darauf. Die gitolite-Konfiguration befindet sich als
2013-11-13 14:31:08 +00:00
Git-Submodule im Verzeichnis { \tt aufgabe2.4/gitolite-admin} .
2013-11-11 14:30:12 +00:00
Das lctp-Repository wiederum lässt sich mit folgendem Befehl clonen:
2013-11-07 12:34:31 +00:00
2013-11-11 14:30:12 +00:00
\shellcmd { git clone git@141.76.90.104:lctp.git lctp-gruppe4}
2013-10-31 17:05:31 +00:00
2013-11-11 14:30:12 +00:00
\shellcmd { cd lctp-gruppe4 \& \& git submodule init \& \& git submodule update}
2013-11-08 08:59:56 +00:00
2013-11-05 09:50:33 +00:00
\subsubsection { etckeeper}
2013-10-31 17:05:31 +00:00
Um die Konfiguration in { \tt /etc } versionierbar und damit nachvollziehbar zu machen installierten wir { \tt etckeeper} :
\shellcmd { yaourt -S etckeeper \& \& sudo etckeeper init}
2013-11-11 14:30:12 +00:00
\shellcmd { cd /etc/.git \& \& sudo git remote add git@zotac0:lctp.git}
2013-11-07 12:34:31 +00:00
2013-10-31 17:05:31 +00:00
Dieses legt ein { \tt git} -Repository in { \tt /etc/.git} an und erstellt Commits bei Änderungen in { \tt /etc} .
2013-11-07 12:34:31 +00:00
Um die Konfiguration vom Bericht zu trennen, haben wir uns entschieden, { \tt
2013-11-11 14:30:12 +00:00
etckeeper} in ein dediziertes Repository ({ \tt logs} ) pushen und als Submodule
im { \tt lctp} -Repository einzubinden:
2013-11-07 12:34:31 +00:00
2013-11-11 14:30:12 +00:00
\shellcmd { sudo git remote add origin git@zotac0:etckeeper.git}
2013-11-07 12:34:31 +00:00
2013-10-31 17:05:31 +00:00
Anders als bei anderen Paketmanagern wie { \tt apt} auf Debian, existieren in { \tt pacman} (\ref { sec:pacman} )
keine Hooks.
2013-11-13 14:31:08 +00:00
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 { \tt pacman}
und { \tt yaourt} geschrieben und diese { \tt /usr/local/bin} abgelegt. Da in der
Shell { \tt /usr/local/bin} für gewöhnlich eine höhere Priorität hat als { \tt
/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} ).
2013-11-07 12:34:31 +00:00
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 { \tt etckeeper} liegt, als cronjob installiert (siehe
2013-11-13 14:31:08 +00:00
\emph { aufgabe2.4/cron.daily/etckeeper} ).
2013-11-11 14:30:12 +00:00
2013-10-31 17:05:31 +00:00
\subsubsection { Logs in git}
2013-11-03 12:16:31 +00:00
Arch Linux setzt in der Standard-Installation { \tt journald} als Logging-Daemon ein. Dieses benutzt im Unterschied zu herkömmlichen Syslog-Varianten ein Binärformat zum Speichern.
2013-11-07 12:34:31 +00:00
Dieses Dateiformat eignet sich aus offensichtlichen Gründen nicht um mithilfe
von git verwaltet zu werden. Deswegen haben wir zusätzlich { \tt syslog-ng}
2013-11-13 14:31:08 +00:00
installiert und { \tt journald} so konfiguriert, das dieses ebenfalls in das
syslog schreibt (siehe \emph { aufgabe2.4/journald.conf} ).
2013-11-07 12:34:31 +00:00
Für tägliche commits haben wir hierfür das Shell-Script { \tt git-commit-log}
nach { \tt /etc/cron.daily/} installiert (siehe
2013-11-13 14:31:08 +00:00
\emph { aufgabe2.4/cron.daily/git-commit-log} ). Dieses pusht die Log-Dateien in das
2013-11-11 14:30:12 +00:00
logs-Repository. Es ist als Submodule im Verzeichnis { \tt logs} im
lctp-Repository eingebunden.