Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
fr:gitlab_admin [2016/12/11 20:09] – backup zatalyz | fr:gitlab_admin [2024/06/19 16:35] (Version actuelle) – [Problèmes courants et résolution] zatalyz | ||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
</ | </ | ||
+ | Le tour d' | ||
===== Installation ===== | ===== Installation ===== | ||
Ligne 22: | Ligne 23: | ||
==== Configuration de base : gitlab.rb ==== | ==== Configuration de base : gitlab.rb ==== | ||
Éléments à changer (je met ce qu'il y a chez nous) : | Éléments à changer (je met ce qu'il y a chez nous) : | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | J'ai modifié un peu la config : le serveur gitlab n'a pas à gérer https, seul le reverse proxy va s'en occuper. Les communications au sein du réseau des VM vont être en http simple. | ||
+ | |||
+ | nginx[' | ||
+ | |||
+ | </ | ||
+ | |||
<code ruby / | <code ruby / | ||
############################# | ############################# | ||
Ligne 57: | Ligne 66: | ||
## log | ## log | ||
logrotate[' | logrotate[' | ||
+ | ## Localisation des dépôts (indiquez là où seront les votres !) | ||
+ | git_data_dir "/ | ||
+ | # | ||
+ | ## Pour les conteneurs | ||
+ | package[' | ||
+ | |||
</ | </ | ||
- | Adaptez à l' | + | Adaptez à l' |
Pour paramétrer le mail : https:// | Pour paramétrer le mail : https:// | ||
Ligne 228: | Ligne 243: | ||
Voir aussi la doc : https:// | Voir aussi la doc : https:// | ||
- | Pour faire une sauvegarde | + | ==== Pour faire une sauvegarde |
+ | |||
gitlab-rake gitlab: | gitlab-rake gitlab: | ||
Ligne 248: | Ligne 264: | ||
On peut mettre en place un cron régulier qui lancera ce backup. Il faut, en plus, sauvegarder le contenu de ''/ | On peut mettre en place un cron régulier qui lancera ce backup. Il faut, en plus, sauvegarder le contenu de ''/ | ||
+ | === Version gitlab === | ||
+ | Dans le fichier gitlab.rb, paramétrez cette partie : | ||
+ | < | ||
+ | gitlab_rails[' | ||
+ | gitlab_rails[' | ||
+ | :provider => ' | ||
+ | :local_root => '/ | ||
+ | } | ||
+ | gitlab_rails[' | ||
+ | </ | ||
+ | |||
+ | Récupérez ensuite les données de ''/ | ||
+ | |||
+ | === Version manuelle === | ||
+ | Si vous n'avez pas envie de passer par gitlab, placez ce script dans root : | ||
+ | <code bash / | ||
+ | # Sauvegarde de gitlab | ||
+ | gitlab-rake gitlab: | ||
+ | cp -R / | ||
+ | chown -R branaz: | ||
+ | chmod -R g+rw / | ||
+ | |||
+ | Remplacer ''/ | ||
+ | |||
+ | Insérez ensuite cette ligne dans cron ('' | ||
+ | 01 01 * * * / | ||
+ | |||
+ | |||
+ | |||
+ | ==== Pour restaurer ==== | ||
+ | * s' | ||
+ | * Éteindre unicorn et sidekiq | ||
+ | <code bash> | ||
+ | sudo gitlab-ctl stop puma | ||
+ | sudo gitlab-ctl stop sidekiq | ||
+ | sudo gitlab-ctl status | ||
+ | </ | ||
+ | * remettre en place le fichier ''/ | ||
+ | < | ||
+ | cp / | ||
+ | * mettre le fichier de sauvegarde dans ''/ | ||
+ | < | ||
+ | chown git:git / | ||
+ | </ | ||
+ | * puis lancer les commandes suivantes (en adaptant au nom du fichier de sauvegarde) : | ||
+ | |||
+ | sudo gitlab-rake gitlab: | ||
+ | sudo gitlab-ctl reconfigure | ||
+ | sudo gitlab-ctl start | ||
+ | sudo gitlab-rake gitlab: | ||
+ | |||
+ | |||
+ | '' | ||
+ | |||
+ | ==== Sauvegarder le reste ==== | ||
+ | Le backup plus haut ne se suffit pas à lui-même ; il faut sauvegarder les repositories à part (sauf si vous voulez remplir votre disque dur) et la configuration de gitlab. | ||
+ | |||
+ | Comme nous sommes des gens sérieux, nous ne faisons pas des sauvegardes en se connectant automatiquement depuis un serveur distant avec root. | ||
+ | |||
+ | Comme gitlab n'est pas aussi sérieux, il va nous prendre la tête. | ||
+ | |||
+ | Bref, commençons par créer un utilisateur basique, qui aura uniquement des droits en lecture, et qui servira à se connecter. Ajoutez-le dans le groupe git. Donnez les droits sur les dépôts et le dossier où les backup de gitlab seront stockés. | ||
+ | |||
+ | < | ||
+ | chown g+rx / | ||
+ | |||
+ | Pensez aussi à lui permettre de se connecter via ssh dans ''/ | ||
+ | |||
+ | Gérez l' | ||
+ | |||
+ | Et maintenant la bonne blague : <wrap hi>à chaque fois que vous ferez '' | ||
+ | |||
+ | <WRAP center round tip 60%> | ||
+ | Une alternative pourrait être d' | ||
- | <WRAP center round todo 60%> | + | Participez à ce fichu tuto si vous savez comment faire ! |
- | Work in progress : ajouter un crontab aux oignons pour tout envoyer là ou un serveur de sauvegarde peut aller chercher les données sans risques. | + | |
</ | </ | ||
- | Pour restaurer, remettre en place le fichier ''/ | ||
- | gitlab-ctl stop unicorn | ||
- | gitlab-ctl stop sidekiq | ||
- | gitlab-ctl status | ||
- | gitlab-rake gitlab: | ||
- | gitlab-ctl reconfigure | ||
- | gitlab-ctl start | ||
- | gitlab-rake gitlab: | ||
+ | ==== Récupérer les images ==== | ||
+ | On doit pouvoir ajouter la sauvegarde des images d' | ||
+ | |||
+ | Il suffit de copier ce dossier '' | ||
+ | chown -R gitlab-www: | ||
+ | chmod -R 2770 uploads | ||
+ | |||
+ | ==== Erreur de version de Gitlab ==== | ||
+ | Dans les features merveilleuses de Gitlab, ce dernier demande à ce qu'un backup vienne exactement de la même version que le gitlab où il sera restauré. Donc, si votre backup date de la version 8.14.3 de Gitlab et que depuis, vous êtes en 8.14.4, impossible de remettre en place le backup. Vu les mises à jour rapides, vous aurez donc des problèmes si vous souhaitez restaurer un backup datant d'un mois avant. | ||
+ | |||
+ | Vous avez donc lancé la commande citée plus haut, et vous avez un message d' | ||
+ | < | ||
+ | gitlab-rake gitlab: | ||
+ | Unpacking backup ... done | ||
+ | GitLab version mismatch: | ||
+ | Your current GitLab version (8.14.4) differs from the GitLab version in the backup! | ||
+ | Please switch to the following version and try again: | ||
+ | version: 8.14.3</ | ||
+ | |||
+ | Copiez le backup dans un dossier, puis sortez-le de son archive : | ||
+ | < | ||
+ | tar xvf 1481484380_gitlab_backup.tar</ | ||
+ | |||
+ | Modifiez le fichier '' | ||
+ | |||
+ | tar cvf ../ | ||
+ | |||
+ | Reprenez le processus de restauration, | ||
==== Sous Docker ==== | ==== Sous Docker ==== | ||
Ligne 271: | Ligne 380: | ||
Pour restaurer : | Pour restaurer : | ||
- | | + | |
==== Notes pour les sauvegardes ==== | ==== Notes pour les sauvegardes ==== | ||
===== Brancher avec les dépôts ===== | ===== Brancher avec les dépôts ===== | ||
+ | Pour que gitlab utilise des dépôts situés sur une autre partition, il suffit de lui indiquer dans '' | ||
+ | |||
+ | ==== Installer une partition annexe avec Xen/LVM et y accéder ==== | ||
+ | J'ai créé un volume logique qui n'aura pour but QUE d' | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Pour des raisons de persistance des données, il ne faut pas utiliser un volume en même temps avec deux systèmes. Donc, soit la VM1 fait appel au volume de dépôt, soit la VM2, mais jamais les deux en même temps ! | ||
+ | </ | ||
+ | lvcreate -n depots-branaz -L 50g groska | ||
+ | |||
+ | La taille doit évidement être adaptée, 50g c'est pour un petit projet. | ||
+ | |||
+ | Ensuite on éteins branaz((Ou le nom de la VM créé pour gérer Gitlab ; dans cet exemple, elle s' | ||
+ | |||
+ | < | ||
+ | disk = [ | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ] | ||
+ | |||
+ | |||
+ | </ | ||
+ | * xvda3 : pour le système, ce sera un équivalent de " | ||
+ | * w : pour permettre l' | ||
+ | |||
+ | On relance branaz et on va paramétrer < | ||
+ | |||
+ | Formatage de la partition : | ||
+ | mkfs.ext4 /dev/xvda3 | ||
+ | |||
+ | Vérifier que tout va bien en la montant : | ||
+ | mkdir /mnt/depots | ||
+ | mount /dev/xvda3 / | ||
+ | |||
+ | Si tout est bon, ajouter cette partition dans ''/ | ||
+ | |||
+ | /dev/xvda3 /mnt/depots ext4 defaults 0 0 | ||
+ | |||
+ | |||
+ | <WRAP center round tip 90%> | ||
+ | En cas d' | ||
+ | partx -u /dev/xvda3 | ||
+ | </ | ||
+ | |||
+ | Il suffit ensuite d' | ||
+ | |||
+ | Ensuite s' | ||
+ | chown -R git:git /mnt/depots | ||
+ | chmod -R 2770 /mnt/depots | ||
+ | |||
+ | ==== Permettre l' | ||
+ | Gitlab offre, pour chaque dépôt, un accès " | ||
+ | |||
+ | Éditer le fichier ''/ | ||
+ | |||
+ | < | ||
+ | AllowUsers root git | ||
+ | </ | ||
+ | |||
===== Architecture ===== | ===== Architecture ===== | ||
Lors d'une installation basique comme cité plus haut, voici où trouver le bazar lié à gitlab : | Lors d'une installation basique comme cité plus haut, voici où trouver le bazar lié à gitlab : | ||
- | # find / -name *gitlab* -type d | + | < |
/etc/gitlab | /etc/gitlab | ||
/ | / | ||
/ | / | ||
- | /opt/gitlab | + | /opt/gitlab</ |
+ | |||
+ | |||
+ | ===== Problèmes courants et résolution ===== | ||
+ | En plus de ce qui est listé ici et là, Gitlab est adepte de quelques petites pannes " | ||
+ | |||
+ | Après une mise à jour, il faut régulièrement relancer la commande '' | ||
+ | |||
+ | De temps en temps et suivant les versions, Gitlab sature. Généralement il remplit la RAM, plante, et bloque. Parfois aussi il remplit l' | ||
+ | |||
+ | Plus le temps passe et moins je crois à la finesse avec ce truc, donc avant de chercher trop loin, commencez simplement par vous connecter à la VM et : | ||
+ | reboot | ||
+ | |||
+ | Après le reboot, attendez au moins 15 minutes, gitlab est très long à lancer correctement tous ses services. Si un coup de '' | ||
+ | |||
+ | Si toujours rien, tentez '' | ||
+ | |||
+ | Enfin, en dernier ressort, Gitlab aime bien '' | ||
+ | |||
+ | Si ça ne marche toujours pas, allez prendre l'air un grand coup, faites autre chose pendant quelques heures. Avec un peu de chance, un des petits dieux de l' | ||
+ | |||
+ | Ensuite, si aucun des disques n'est plein ('' | ||
+ | |||
+ | Si rien de tout ça n'a marché, il va falloir chercher plus... Retour aux outils traditionnels de sysadmin, vérification des logs, des services de systemd, etc. Ou bien éteignez gitlab et branchez vos dépôts sur un autre système, ça ne doit pas être bien plus long. | ||
+ | |||
+ | ===== Astuces ===== | ||
+ | ==== Enlever la fenêtre de pop-up des emojis ==== | ||
+ | Un truc très pénible quand on écris français : les deux points précédés d'une espace font apparaître un pop-up d' | ||
+ | Deux solutions : | ||
+ | * La touche Echap ferme ce popup, jusqu' | ||
+ | * Avec uBlock Origin, dans mes filtres, ajouter la règle suivante : '' | ||