bericht: git-Installation
This commit is contained in:
parent
30b116c40f
commit
91d5457c2c
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[submodule "aufgabe4/gitolite-admin"]
|
||||||
|
path = aufgabe4/gitolite-admin
|
||||||
|
url = git@lctp:gitolite-admin.git
|
20
aufgabe4/cron.daily/etckeeper
Executable file
20
aufgabe4/cron.daily/etckeeper
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
if [ -x /usr/bin/etckeeper ] && [ -e /etc/etckeeper/etckeeper.conf ]; then
|
||||||
|
. /etc/etckeeper/etckeeper.conf
|
||||||
|
if [ "$AVOID_DAILY_AUTOCOMMITS" != "1" ]; then
|
||||||
|
# avoid autocommit if an install run is in progress
|
||||||
|
lockfile=/var/cache/etckeeper/packagelist.pre-install
|
||||||
|
if [ -e "$lockfile" ] && [ -n "$(find "$lockfile" -mtime +1)" ];
|
||||||
|
then
|
||||||
|
rm -f "$lockfile" # stale
|
||||||
|
fi
|
||||||
|
if [ ! -e "$lockfile" ]; then
|
||||||
|
AVOID_SPECIAL_FILE_WARNING=1
|
||||||
|
export AVOID_SPECIAL_FILE_WARNING
|
||||||
|
if etckeeper unclean; then
|
||||||
|
etckeeper commit "daily autocommit" >/dev/null
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
6
aufgabe4/cron.daily/git-commit-log
Executable file
6
aufgabe4/cron.daily/git-commit-log
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
GIT_HOME=/var/log
|
||||||
|
find /var/log -iname \*.log | xargs git add
|
||||||
|
git commit -m "daily autocommit"
|
||||||
|
git push --force origin master:logs
|
42
aufgabe4/etckeeper.conf
Normal file
42
aufgabe4/etckeeper.conf
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# The VCS to use.
|
||||||
|
#VCS="hg"
|
||||||
|
VCS="git"
|
||||||
|
#VCS="bzr"
|
||||||
|
#VCS="darcs"
|
||||||
|
|
||||||
|
# Options passed to git commit when run by etckeeper.
|
||||||
|
GIT_COMMIT_OPTIONS=""
|
||||||
|
|
||||||
|
# Options passed to hg commit when run by etckeeper.
|
||||||
|
HG_COMMIT_OPTIONS=""
|
||||||
|
|
||||||
|
# Options passed to bzr commit when run by etckeeper.
|
||||||
|
BZR_COMMIT_OPTIONS=""
|
||||||
|
|
||||||
|
# Options passed to darcs record when run by etckeeper.
|
||||||
|
DARCS_COMMIT_OPTIONS="-a"
|
||||||
|
|
||||||
|
# Uncomment to avoid etckeeper committing existing changes
|
||||||
|
# to /etc automatically once per day.
|
||||||
|
#AVOID_DAILY_AUTOCOMMITS=1
|
||||||
|
|
||||||
|
# Uncomment the following to avoid special file warning
|
||||||
|
# (the option is enabled automatically by cronjob regardless).
|
||||||
|
#AVOID_SPECIAL_FILE_WARNING=1
|
||||||
|
|
||||||
|
# Uncomment to avoid etckeeper committing existing changes to
|
||||||
|
# /etc before installation. It will cancel the installation,
|
||||||
|
# so you can commit the changes by hand.
|
||||||
|
#AVOID_COMMIT_BEFORE_INSTALL=1
|
||||||
|
|
||||||
|
# The high-level package manager that's being used.
|
||||||
|
# (apt, pacman-g2, yum, zypper etc)
|
||||||
|
HIGHLEVEL_PACKAGE_MANAGER=yaourt
|
||||||
|
|
||||||
|
# The low-level package manager that's being used.
|
||||||
|
# (dpkg, rpm, pacman, pacman-g2, etc)
|
||||||
|
LOWLEVEL_PACKAGE_MANAGER=pacman
|
||||||
|
|
||||||
|
# To push each commit to a remote, put the name of the remote here.
|
||||||
|
# (eg, "origin" for git).
|
||||||
|
PUSH_REMOTE="origin"
|
1
aufgabe4/gitolite-admin
Submodule
1
aufgabe4/gitolite-admin
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 9ef5e71225c672494ee436de71e121b40f5b26c1
|
14
aufgabe4/pacman
Executable file
14
aufgabe4/pacman
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ "$1" != -S && "$1" != -S*u && "$1" != -U ]]; then
|
||||||
|
/usr/bin/pacman "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ $EUID -eq 0 ]] && etckeeper pre-install
|
||||||
|
|
||||||
|
/usr/bin/pacman "$@"
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
[[ $EUID -eq 0 ]] && etckeeper post-install
|
||||||
|
exit $EXIT_CODE
|
14
aufgabe4/yaourt
Executable file
14
aufgabe4/yaourt
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if [[ "$1" != -S && "$1" != -S*u && "$1" != -U ]]; then
|
||||||
|
/usr/bin/yaourt "$@"
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo etckeeper pre-install
|
||||||
|
|
||||||
|
/usr/bin/yaourt "$@"
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
sudo etckeeper post-install
|
||||||
|
exit $EXIT_CODE
|
@ -1,6 +1,10 @@
|
|||||||
\appendix
|
\appendix
|
||||||
|
|
||||||
\section{Paket-Installationen unter Arch Linux}
|
\section{Paket-Installationen unter Arch Linux}
|
||||||
|
\label{sec:pacman}
|
||||||
|
|
||||||
|
Pacman ist der Paketmanager unter Archlinux. Paketmanager werden benutzt um die
|
||||||
|
Software zu installieren, zu aktualisieren oder zu entfernen.
|
||||||
|
|
||||||
\subsection{Paketlisten laden / Updates}
|
\subsection{Paketlisten laden / Updates}
|
||||||
|
|
||||||
@ -10,9 +14,7 @@ Die Paketlisten werden mit {\tt pacman -Sy} neu geladen. Updates werden mit {\tt
|
|||||||
|
|
||||||
Pakete aus dem offiziellen Arch Linux-Repository werden mit:
|
Pakete aus dem offiziellen Arch Linux-Repository werden mit:
|
||||||
|
|
||||||
\begin{center}
|
\shellcmd{pacman -S <package>}
|
||||||
\tt pacman -S <package>
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
installiert.
|
installiert.
|
||||||
|
|
||||||
@ -23,4 +25,8 @@ Bei den \href{https://aur.archlinux.org/?setlang=de}{»Arch User Repositories«}
|
|||||||
|
|
||||||
\subsubsection{yaourt}
|
\subsubsection{yaourt}
|
||||||
|
|
||||||
Das Tool {\tt yaourt}, das man ebenfalls aus dem AUR beziehen kann, automatisiert die Installation weiterer Pakete aus dem AUR und bietet ebenfalls die Möglichkeit, diese zu aktualisieren. Die Kommandozeilen-Argumente sind die gleichen wie bei {\tt pacman}, da das Tool im Grunde ein Wrapper für {\tt pacman} ist.
|
Das Tool {\tt yaourt}, das man ebenfalls aus dem AUR beziehen kann,
|
||||||
|
automatisiert die Installation weiterer Pakete aus dem AUR und bietet ebenfalls
|
||||||
|
die Möglichkeit, diese zu aktualisieren. Die Kommandozeilen-Argumente sind die
|
||||||
|
gleichen wie bei {\tt pacman}, da das Tool im Grunde ein Wrapper für {\tt
|
||||||
|
pacman} ist.
|
||||||
|
@ -1,2 +1,39 @@
|
|||||||
\subsection{Git-Server}
|
\subsection{Git-Server}
|
||||||
\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.
|
||||||
|
Die Authentisierung 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}
|
||||||
|
|
||||||
|
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@lctp:gitolite.git}
|
||||||
|
|
||||||
|
Wir legten das Repository {\tt lctp}.
|
||||||
|
|
||||||
|
\subsubsection{Etckeeper}
|
||||||
|
|
||||||
|
Um die Konfiguration in {\tt /etc } versionierbar und damit nachvollziehbar zu machen installierten wir {\tt etckeeper}:
|
||||||
|
|
||||||
|
\shellcmd{yaourt -S etckeeper \&\& sudo etckeeper init}
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
\shellcmd{sudo git push -u origin master:etckeeper}
|
||||||
|
|
||||||
|
Anders als bei anderen Paketmanagern wie {\tt apt} auf Debian, existieren in {\tt 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 {\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 {\tt aufgabe4/yaourt} sowie in {\tt 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 {\tt aufgabe4/cron.daily/etckeeper})
|
||||||
|
|
||||||
|
\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. 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 {\tt 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 {\tt aufgabe4/cron.daily/git-commit-log}).
|
||||||
|
|
||||||
|
% - journald -> syslog, cronjob
|
||||||
|
@ -40,6 +40,17 @@ body,
|
|||||||
/* Set you're content font stack here: */
|
/* Set you're content font stack here: */
|
||||||
font-family: 'Source Sans Pro', sans-serif;
|
font-family: 'Source Sans Pro', sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
font-family: Consolas,'Liberation Mono',Courier,monospace;
|
||||||
|
color: rgb(51, 51, 51);
|
||||||
|
background: none repeat scroll 0% 0% rgb(250, 250, 250);
|
||||||
|
word-wrap: break-word;
|
||||||
|
line-height: 1.3em;
|
||||||
|
border: 1px solid rgb(238, 238, 238);
|
||||||
|
margin: 1.3em 0px 1em;
|
||||||
|
padding: 1.3em;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
@ -103,6 +114,15 @@ body,
|
|||||||
<h2>Bericht</h2>
|
<h2>Bericht</h2>
|
||||||
<a href="uploads/bericht.pdf" class="pure-button pure-button-primary">Download</a>
|
<a href="uploads/bericht.pdf" class="pure-button pure-button-primary">Download</a>
|
||||||
</section>
|
</section>
|
||||||
|
<section id="git">
|
||||||
|
<h2>Git-Zugriff</h2>
|
||||||
|
<pre>cat <<'EOF' >> ~/.ssh/config
|
||||||
|
Host lctp
|
||||||
|
HostName 141.76.90.104
|
||||||
|
EOF</pre>
|
||||||
|
<pre>git clone git@lctp:lctp.git</pre>
|
||||||
|
<pre>cd lctp && git submodule update</pre>
|
||||||
|
</section>
|
||||||
<section id="team">
|
<section id="team">
|
||||||
<h2>Team</h2>
|
<h2>Team</h2>
|
||||||
<p>
|
<p>
|
||||||
@ -140,6 +160,5 @@ body,
|
|||||||
(C) ZOTAC Cluster
|
(C) ZOTAC Cluster
|
||||||
</footer>
|
</footer>
|
||||||
-->
|
-->
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user