Skip to main content

etckeeper mit gitlab verwenden

gitlab vorbereiten

  • 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 
aptitudeupdate && 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
git init
git remote add origin git@gitlab.ovtec.it:etckeeper/`hostname -f`.git
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`u` -eq 0 ] || return
 
 
_USER=_USER=""
_HOSTNAME=_HOSTNAME=`hostname`hostname`
if [ -n "$SUDO_USER"SUDO_USER" ]; then
    _USER=_USER="$SUDO_USER"SUDO_USER"
else
    # try to check tty ownership, in case user su'd to root
    _TTY=_TTY="$(tty 2>/dev/null || true)"
    if [ -n "$_TTY"_TTY" ] && [ -c "$_TTY"_TTY" ]; then
        _USER=_USER="$(find "$_TTY" -printf "%u")"
    fi
fi
 
 _etckeeper()
_etckeeper(){
    {if if[ [ -x /usr/bin/usr/bin/git ] && [ -d /etc/etc/.git ]; then
        (
        cd /etc
 
         if if [ $(git status --porcelain | wc -l)l) -eq 0 ] ; then
            return 0
        fi
 
         if if! ! git add --all;all; then
            echo "warning: git add --all" >&2
        fi
 
 
        etckeeper commit "Automated commit at exit"
        )
    fi
}
 
 if if[ [ -n "$_USER"_USER" ]; then
    if [ -z "$GIT_AUTHOR_NAME"GIT_AUTHOR_NAME" ]; then
        [ -f /home/home/$_USER/_USER/.gitconfig ] && GIT_AUTHOR_NAME=GIT_AUTHOR_NAME=$(git config -f /home/home/$_USER/_USER/.gitconfig --get user.name)name)
        [ -z "$GIT_AUTHOR_NAME"GIT_AUTHOR_NAME" ] && GIT_AUTHOR_NAME=GIT_AUTHOR_NAME="$_USER"_USER"
        export GIT_AUTHOR_NAME
    fi
 
     if if[ [ -z "$GIT_AUTHOR_EMAIL"GIT_AUTHOR_EMAIL" ]; then
        [ -f /home/home/$_USER/_USER/.gitconfig ] && GIT_AUTHOR_EMAIL=GIT_AUTHOR_EMAIL=$(git config -f /home/home/$_USER/_USER/.gitconfig --get user.email)email)
        [ -z "$GIT_AUTHOR_EMAIL"GIT_AUTHOR_EMAIL" ] && GIT_AUTHOR_EMAIL=GIT_AUTHOR_EMAIL="$_USER@$_HOSTNAME"_USER@$_HOSTNAME"
        export GIT_AUTHOR_EMAIL
    fi
 
     if if[ [ -z "$GIT_COMMITTER_EMAIL"GIT_COMMITTER_EMAIL" ]; then
        export GIT_COMMITTER_EMAIL=GIT_COMMITTER_EMAIL=`whoami`whoami`"@$_HOSTNAME"@$_HOSTNAME"
    fi
 
     
    trap _etckeeper EXIT
fi