Comment migrer GitLab vers un nouveau serveur

Au boulot, j’ai dû migrer le serveur GitLab de la boite vers un VPS plus puissant chez OVH. Ce n’était vraiment pas compliqué finalement, mais j’avoue que par inattention j’ai fait pas mal d’erreurs.

C’est pourquoi je vous propose cet article. Je m’écris vous écris la démarche sans erreurs ici.

Faire une sauvegarde de l’ancien serveur GitLab

Je ne sais pas si vous aviez l’habitude de faire une sauvegarde régulière de votre serveur GitLab. Si oui tant mieux, c’est une best practice qu’il faut avoir et vous pouvez donc passer cette étape (ne pas la lire, mais la faire quand même).

Pour les autres voici la marche à suivre.

Si vous n’avez pas de dossier une sauvegarde dans /var/opt/gitlab/ créez le.

Faites une copie des clés d’authentifications /etc/gitlab/gitlab-secrets.json

Lancez la création d’une sauvegarde :

# version package (apt-get) 
gitlab-rake gitlab:backup:create 

# version installation manuelle 
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production

Vous pouvez récupérer l’archive créée dans le dossier d’une sauvegarde

Installation du nouveau serveur

Cette étape est classique, il s’agit d’une installation normale de GitLab.

Normalement vous maitrisez déjà cette partie. Seule différence pour les plus anciens d’entre nous à utiliser GitLab c’est que les nouvelles versions ne s’installent plus manuellement, mais à partir du gestionnaire de paquets.

Commencez par installer les paquets nécessaires au bon fonctionnement de GitLab
sudo apt-get install curl openssh-server ca-certificates postfix

Ajouter les serveurs de GitLab comme serveurs de paquets pour votre machine
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash

Installez GitLab sudo apt-get install gitlab-ce

Configurez GitLab selon vos besoins puis lancez sudo gitlab-ctl reconfigure

Transferts des données entre les serveurs

Copiez votre archive (créée précédemment) dans /var/opt/gitlab/backups/

Rétablissez les bons droits sur l’archive sudo chown git:git /var/opt/gitlab/backups/[timestamp]_gitlab_backup.tar

Copier gitlab-secrets.json dans /etc/gitlab/

Stoppez les processus qui sont connectés à la base de données
sudo gitlab-ctl stop unicorn; sudo gitlab-ctl stop sidekiq

Remontez toutes les données (indiquez à la variable BACKUP le timestamp correspondant au backup que vous souhaitez remonter)
sudo gitlab-rake gitlab:backup:restore BACKUP=24567834567

Redémarrer GitLab sudo gitlab-ctl start

Créez les satellites Ruby manquants
sudo gitlab-rake gitlab:satellites:create

Vérifiez que tout s’est bien passé
sudo gitlab-rake gitlab:check SANITIZE=true

À ce stade, si tout s’est bien passé, vous avez un serveur tout neuf avec la dernière version de GitLab ainsi que tous vos projets installés. Vous pouvez souffler vous n’avez rien perdu !