etckeeper mit gitlab verwenden

gitlab vorbereiten 
 
 
 
 Installation: https://about.gitlab.com/downloads/#debian8 
 
 
 Gruppe „etckeeper“ in gitlab angelegt 
 
 
 1 neues Projekt pro Server in dieser Gruppe angelegt 
 
 
 1 dedizierten User für Serverdinge angelegt 
 
 
 alle SSH-Pubkey der Server in diesem User hinterlegt. 
 
 
 
 Installation 
 apt update && apt install -y etckeeper git 
 
 globale git Konfiguration 
 git config --global user.name "Oliver Völker"
git config --global user.email "info@ovtec.it"
git config --global core.editor "vim"
git config --global push.default simple 
 
 etckeeper Konfiguration 
 
 
 /etc/etckeeper/etckeeper.conf 
 
 VCS="git"
AVOID_SPECIAL_FILE_WARNING=1
PUSH_REMOTE="origin" 
 
 
 
 ersten Commit einchecken 
 cd /etc
# start clean?
# rm -rf .git
git init --initial-branch=main --object-format=sha1
# oder falls das schon die Branch 'master' existiert: git switch --create main
git remote add origin git@gitlab.ovtec.it:etckeeper/`hostname -f`.git
# oder fish: git remote add origin git@gitlab.ovtec.it:etckeeper/$(hostname -f).git
git push --set-upstream origin main
etckeeper commit "initial commit" 
 
 Dateien ignorieren (Beispiel) 
 
 
 /etc/.gitignore 
 
 git rm --cached openvpn/OVTEC/status.txt
git add .gitignore 
 
 
 
 automatische Commits bei Logout 
 Diese Datei z.B. in /usr/local/share/logout_trap.sh ablegen und beim Login jedes Users z.B. durch einen Eintrag in ~/.profile sourcen lassen. 
 [ `id -u` -eq 0 ] || return

_USER=""
_HOSTNAME=`hostname`
if [ -n "$SUDO_USER" ]; then
 _USER="$SUDO_USER"
else
 # try to check tty ownership, in case user su'd to root
 _TTY="$(tty 2>/dev/null || true)"
 if [ -n "$_TTY" ] && [ -c "$_TTY" ]; then
 _USER="$(find "$_TTY" -printf "%u")"
 fi
fi

_etckeeper()
{
 if [ -x /usr/bin/git ] && [ -d /etc/.git ]; then
 (
 cd /etc

 if [ $(git status --porcelain | wc -l) -eq 0 ] ; then
 return 0
 fi

 if ! git add --all; then
 echo "warning: git add --all" >&2
 fi

 etckeeper commit "Automated commit at exit"
 )
 fi
}

if [ -n "$_USER" ]; then
 if [ -z "$GIT_AUTHOR_NAME" ]; then
 [ -f /home/$_USER/.gitconfig ] && GIT_AUTHOR_NAME=$(git config -f /home/$_USER/.gitconfig --get user.name)
 [ -z "$GIT_AUTHOR_NAME" ] && GIT_AUTHOR_NAME="$_USER"
 export GIT_AUTHOR_NAME
 fi

 if [ -z "$GIT_AUTHOR_EMAIL" ]; then
 [ -f /home/$_USER/.gitconfig ] && GIT_AUTHOR_EMAIL=$(git config -f /home/$_USER/.gitconfig --get user.email)
 [ -z "$GIT_AUTHOR_EMAIL" ] && GIT_AUTHOR_EMAIL="$_USER@$_HOSTNAME"
 export GIT_AUTHOR_EMAIL
 fi

 if [ -z "$GIT_COMMITTER_EMAIL" ]; then
 export GIT_COMMITTER_EMAIL=`whoami`"@$_HOSTNAME"
 fi

 trap _etckeeper EXIT
fi