Git: Repositories verlinkt
This commit is contained in:
parent
da49e3869a
commit
51dc24486c
@ -2,7 +2,7 @@
|
|||||||
\label{sub:git_server}
|
\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.
|
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.
|
||||||
Die Authentisierung erfolgt dabei über SSH-Keys. Hier für wird ein {\tt git} Nutzer eingerichtet:
|
Die Authentifizierung erfolgt dabei über SSH-Keys. Hier für wird ein {\tt git} Nutzer eingerichtet:
|
||||||
|
|
||||||
\shellcmd{useradd -m -U -r -s /bin/bash -d /srv/git git}
|
\shellcmd{useradd -m -U -r -s /bin/bash -d /srv/git git}
|
||||||
|
|
||||||
@ -12,9 +12,14 @@ Für die initiale Einrichtung wird der eigene SSH-Schlüssel zu gitolite hinzuge
|
|||||||
|
|
||||||
Nun kann die eigentliche Konfiguration per git heruntergeladen werden:
|
Nun kann die eigentliche Konfiguration per git heruntergeladen werden:
|
||||||
|
|
||||||
\shellcmd{git clone git@lctp:gitolite.git}
|
\shellcmd{git clone git@141.76.90.104:gitolite-admin.git}
|
||||||
|
|
||||||
Wir legten das Repository {\tt lctp} an.
|
Wir legten in dieser Konfiguration das Repository {\tt lctp} an und gaben allen
|
||||||
|
Benutzern Zugriff darauf. Die gitolite-Konfiguration befindet sich als
|
||||||
|
Git-Submodule im Verzeichnis {\tt aufgabe4/gitolite-admin}. Das lctp-Repository
|
||||||
|
wiederum lässt sich mit folgendem Befehl clonen:
|
||||||
|
|
||||||
|
\shellcmd{git clone git@141.76.90.104:lctp.git}
|
||||||
|
|
||||||
\subsubsection{etckeeper}
|
\subsubsection{etckeeper}
|
||||||
|
|
||||||
@ -22,20 +27,38 @@ Um die Konfiguration in {\tt /etc } versionierbar und damit nachvollziehbar zu m
|
|||||||
|
|
||||||
\shellcmd{yaourt -S etckeeper \&\& sudo etckeeper init}
|
\shellcmd{yaourt -S etckeeper \&\& sudo etckeeper init}
|
||||||
|
|
||||||
|
\shellcmd{cd /etc/.git \&\& sudo git remote add git@localhost:lctp.git}
|
||||||
|
|
||||||
Dieses legt ein {\tt git}-Repository in {\tt /etc/.git} an und erstellt Commits bei Änderungen in {\tt /etc}.
|
Dieses legt ein {\tt git}-Repository in {\tt /etc/.git} an und erstellt Commits bei Änderungen in {\tt /etc}.
|
||||||
Um die Konfiguration von den restlichen Daten zu trennen, haben wir uns entschieden, {\tt etckeeper} in einen dedizierten Branch pushen:
|
Um die Konfiguration vom Bericht zu trennen, haben wir uns entschieden, {\tt
|
||||||
|
etckeeper} in einen dedizierten Branch im {\tt lctp}-Repository pushen:
|
||||||
|
|
||||||
\shellcmd{sudo git push -u origin master:etckeeper}
|
\shellcmd{sudo git push -u origin master:etckeeper}
|
||||||
|
|
||||||
|
Dieser Branch lässt sich auf folgender Weise auschecken:
|
||||||
|
|
||||||
|
\shellcmd{git checkout -b etckeeper origin/etckeeper}
|
||||||
|
|
||||||
Anders als bei anderen Paketmanagern wie {\tt apt} auf Debian, existieren in {\tt pacman} (\ref{sec:pacman})
|
Anders als bei anderen Paketmanagern wie {\tt apt} auf Debian, existieren in {\tt pacman} (\ref{sec:pacman})
|
||||||
keine Hooks.
|
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 {\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{aufgabe4/yaourt} sowie in \emph{aufgabe4/pacman}).
|
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{aufgabe4/yaourt} sowie in \emph{aufgabe4/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} von {\tt etckeeper} liegt, als cronjob installiert (siehe \emph{aufgabe4/cron.daily/etckeeper})
|
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
|
||||||
|
\emph{aufgabe4/cron.daily/etckeeper}).
|
||||||
\subsubsection{Logs in git}
|
\subsubsection{Logs in git}
|
||||||
|
|
||||||
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.
|
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.
|
||||||
Dieses Dateiformat eignet sich aus offensichtlichen Gründen nicht um mithilfe git verwaltet zu werden. Deswegen haben wir zusätzlich {\tt syslog-ng} installiert und {\tt journald} so konfiguriert, das dieses ebenfalls ins syslog schreibt (siehe \emph{aufgabe4/journald.conf}).
|
Dieses Dateiformat eignet sich aus offensichtlichen Gründen nicht um mithilfe
|
||||||
Für tägliche commits haben wir hierfür das Shell-Script {\tt git-commit-log} nach {\tt /etc/cron.daily/} installiert (siehe \emph{aufgabe4/cron.daily/git-commit-log}). Dieses pusht die Log-Dateien in den logs-Branch des lctp-Repository.
|
von git verwaltet zu werden. Deswegen haben wir zusätzlich {\tt syslog-ng}
|
||||||
|
installiert und {\tt journald} so konfiguriert, das dieses ebenfalls in das syslog schreibt (siehe \emph{aufgabe4/journald.conf}).
|
||||||
|
Für tägliche commits haben wir hierfür das Shell-Script {\tt git-commit-log}
|
||||||
|
nach {\tt /etc/cron.daily/} installiert (siehe
|
||||||
|
\emph{aufgabe4/cron.daily/git-commit-log}). Dieses pusht die Log-Dateien in den
|
||||||
|
logs-Branch des lctp-Repository.
|
||||||
|
|
||||||
% - journald -> syslog, cronjob
|
Dieser Branch lässt sich folgendermaßen auschecken:
|
||||||
|
|
||||||
|
\shellcmd{git checkout -b logs origin/log}
|
||||||
|
@ -7,4 +7,11 @@ Das entsprechende Paket war nicht im offiziellen Arch Linux Repository
|
|||||||
vorhanden, deshalb haben wir es über das AUR (siehe \ref{sec:aur}) installiert.
|
vorhanden, deshalb haben wir es über das AUR (siehe \ref{sec:aur}) installiert.
|
||||||
|
|
||||||
\subsubsection{Gruppenverwaltung}
|
\subsubsection{Gruppenverwaltung}
|
||||||
Zur Verwaltung mehrerer Rechner in Gruppen (in unserem Fall Headnode und Computenodes) greift {\tt pdsh} auf die Gruppenbeschreibungsdatei {\tt /etc/genders} (siehe \emph{aufgabe5/genders}) zurück. Dort können mehrere Hosts in verschiedene Gruppen eingeteilt werden. Außerdem mussten wir noch ein Wrapper-Script in {\tt /usr/local/bin} erstellen, das die Umgebungsvariable {\tt PDSH\_RCMD\_TYPE=ssh} setzt (siehe \emph{aufgabe5/pdsh}).
|
Zur Verwaltung mehrerer Rechner in Gruppen (in unserem Fall Headnode und
|
||||||
|
Computenodes) greift {\tt pdsh} auf die Gruppenbeschreibungsdatei {\tt
|
||||||
|
/etc/genders} (siehe \emph{aufgabe5/genders}) zurück. Dort können mehrere Hosts
|
||||||
|
in verschiedene Gruppen eingeteilt werden.
|
||||||
|
Um zu gewährleisten, dass pdsh den richtigen Befehl beim Verbinden benutzt, muss
|
||||||
|
die Umgebungsvariable {\tt PDS\_RCMD\_TYPE} auf den Wert {\tt ssh} gesetzt sein. Dies
|
||||||
|
lösten wir durch ein Wrapper-Script in {\tt /usr/local/bin} erstellen, das die
|
||||||
|
genannte Umgebungsvariable setzt (siehe \emph{aufgabe5/pdsh}).
|
||||||
|
@ -115,8 +115,8 @@ pre {
|
|||||||
Host zotac0
|
Host zotac0
|
||||||
HostName 141.76.90.104
|
HostName 141.76.90.104
|
||||||
EOF</pre>
|
EOF</pre>
|
||||||
<pre>git clone git@zotac0:lctp.git</pre>
|
<pre>git clone git@zotac0:lctp.git lctp-gruppe4</pre>
|
||||||
<pre>cd lctp && git submodule init && git submodule update</pre>
|
<pre>cd lctp-gruppe4 && git submodule init && git submodule update</pre>
|
||||||
</section>
|
</section>
|
||||||
<section id="team">
|
<section id="team">
|
||||||
<h2>Team</h2>
|
<h2>Team</h2>
|
||||||
|
Loading…
Reference in New Issue
Block a user