Restaurer manuellement un backup de GitLab

Pour restaurer manuellement un backup Gitlab, je commence par récupérer les fichiers suivants sur « big » (dans /var/archives/gitlab, en tant que « backuper ») :

  • gitlab-etc.20191226.master.tar.gz — 879 K
  • 1577322274_2019_12_26_12.5.2_gitlab_backup.tar — 3,3 G

Création d’un répertoire « workspace », avec dedans :

  • ./gitlab-secrets.json — récupéré du /etc/gitlab du .tar.gz
  • ./gitlab.rb — récupéré du /etc/gitlab du .tar.gz
  • ./ssl/ — récupéré du /etc/gitlab du .tar.gz
  • ./backups/1577322274_2019_12_26_12.5.2_gitlab_backup.tar — récupéré du .tar

(avertissement) Automatiser tout ça ?

Dans « workspace », récupération du repository GitLab :

$ git clone

On déplace tout le contenu du répertoire « workspace » dans docker/restore-gitlab/ :

$ mv gitlab-secrets.json docker/restore-gitlab/
$ mv gitlab.rb           docker/restore-gitlab/
$ mv ssl/                docker/restore-gitlab/
$ mv backups/            docker/restore-gitlab/
$ cd docker/restore-gitlab/
$ docker build -t tmp/gitlab .

(avertissement) Noter que le gros fichier de backup de 3,3 G pourrait ne pas être dans le répertoire de travail, mais ailleurs, vu qu’il ne sert pas à l’image, seulement au container. Cela accélérerait le build.

(avertissement) Afin de ne pas avoir de problèmes avec votre Docker pendant le restore, votre version de VM docker81 doit être en 64bit et non en 32-bit sous peine de devoir tout recommencer.

On construit l’image :

$ docker build -t tmp/gitlab.

Maintenant on monte le container :

$ docker run -d \    --hostname git --publish 80:80 --publish 443:443 \    -v "${PWD}/../backups:/var/opt/gitlab/backups:ro" \    tmp/gitlab

Le montage du container prend plusieurs minutes ! (14 minutes sur docker81)

Vérification de fin de script : la ligne « Done » doit être écrite tout en bas.

Ensuite pour tester :

$ git clone http://localhost:80/commons/softia-it-commons.git

(coche) Ça fonctionne (au moins dans le container).

(question) Pour ceci, il faudra regarder les certificats :

$ git clone https://localhost:443/commons/softia-it-commons.git

(question) Ou alors est-ce ceci ?

$ git clone https://git.softia.fr/commons/softia-it-commons.gitCloning into 'softia-it-commons'...fatal: unable to access 'https://git.softia.fr/commons/softia-it-commons.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.

(erreur) Même en ayant redéfini « 127.0.0.1 git.softia.fr » dans /etc/hosts.

Cependant, vous avez déjà un restore qui fonctionne en HTTP :80, on va rester là-dessus.

Nous contacter !

Leave a Comment