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

    aptitude install 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` -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