Outils pour utilisateurs

Outils du site


work_in_progress:gitlab

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
work_in_progress:gitlab [2021/11/18 22:19] yoannwork_in_progress:gitlab [2022/01/04 22:06] (Version actuelle) yoann
Ligne 3: Ligne 3:
  
 ====== Gitlab ====== ====== Gitlab ======
 +
 +===== docker-compose =====
 +
 +Ci dessous le docker-compose pour un test en local
 +
 +<file YAML docker-compose.yml>
 +networks:
 +  # Nomme explicitement le réseau par défaut utilisé par les services définis dans ce fichier
 +  default_vnet:
 +
 +services:
 +  gitlab:
 +    image: 'gitlab/gitlab-ce:14.1.8-ce.0'
 +    restart: always
 +    hostname: 'gitlab.services.localhost'
 +    networks:
 +      default_vnet:
 +        aliases:
 +          - gitlab.services.localhost
 +    environment:
 +      GITLAB_OMNIBUS_CONFIG: |
 +        external_url 'http://gitlab.services.localhost'
 +        gitlab_rails['gitlab_shell_ssh_port'] = 2222
 +    ports:
 +      - '127.0.0.1:8084:80'
 +      - '127.0.0.1:4443:443'
 +      - '127.0.0.1:2222:22'
 +    volumes:
 +      - '$GITLAB_HOME/config:/etc/gitlab'
 +      - '$GITLAB_HOME/logs:/var/log/gitlab'
 +      - '$GITLAB_HOME/data:/var/opt/gitlab'
 +</file>
 +
 +<note warning>
 +La valeur de la variable ''external_url'' doit être suffixée avec le port exposé par le conteneur si le port est redéfini. Ne pas utiliser la valeur du port publiée de l’hôte.
 +</note>
 +
 +
 +
 +Pour s'authentifier sur la WebUI récupérer le mot de passe root:
 +<code bash>
 +docker-compose exec gitlab grep 'Password:' /etc/gitlab/initial_root_password
 +</code>
 +
 +<note>
 +Le fichier contenant le mot de passe root généré à l'installation est automatiquement effacé au bout de quelques heures. Si le mot de passe root est perdu, il est possible de ne redéfinir. 
 +</note>
 +
 +===== Redéfinir le mot de passe administrateur =====
 +
 +<code bash>
 +# ouvrir une console Ruby on Rails
 +gitlab-rails console -e production
 +
 +# retrouver l'utilisateur via l'ID
 +user = User.where(id: 1).first
 +
 +# ou via l'email
 +# user = User.find_by(email: 'admin@example.com')
 +
 +
 +# vérifier que l'objet instancié est bien l'utilisateur souhaité
 +puts user.email, user.id
 +
 +# Redéfinir le mot de passe
 +user.password = 'newpass123'
 +user.password_confirmation = 'newpass123'
 +
 +# sauvegarder les modifications
 +user.save!
 +
 +# Quitter la console interactive
 +exit
 +</code>
 +
 +source:
 +  * https://docs.gitlab.com/ee/security/reset_user_password.html
 +
 +
 +Pour pousser un projet git existant
 +<code bash>
 +git push --set-upstream ssh://git@gitlab.services.localhost:2222/root/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
 +</code>
 +===== Utilisateurs =====
 +
 +Création des utilisateurs
 +
 +  * Menu -> Admin
 +  * Panneau Admin Area, Overview -> Users
 +
 +Depuis l'instance de test, le service de mail ne fonctionne pas, utiliser la procédure ci dessus pour définir le mot de passe de l'utilisateur.
 +
 +Une fois identifié l'utilisateur peut créer sa clé SSH
 +<code bash>
 +# générer une paire de clés
 +cd ~/.ssh
 +ssh-keygen -t rsa -b 4096 -C "yoann@gitlab.services.localhost" -f yoann_gitlab_localhost_rsa
 +
 +# Afficher la clé publique
 +cat yoann_gitlab_localhost_rsa.pub
 +
 +# copier /coller la valeur de la clé publique
 +</code>
 +
 +Pour tester la connexion au serveur:
 +
 +<code bash>
 +# Vérifier la valeur du fingerprint du serveur gitlab
 +ssh -l git -p 2222 -T -i ~/.ssh/yoann_gitlab_localhost_rsa  gitlab.services.localhost
 +</code>
 +
 +On notera qu'on utilise toujours le login **git** pour la connexion SSH. Le serveur différencie les utilisateurs via la clé publique déposée sur l'interface Web.
 +
 +Pour faciliter la connexion, on peut définir une entrée dans le fichier **~/.ssh/config**
 +<file>
 +Host gitlab
 +  HostName gitlab.services.localhost
 +  User git
 +  Port 2222
 +  PreferredAuthentications publickey
 +  IdentityFile ~/.ssh/yoann_gitlab_localhost_rsa
 +</file>
 +
 +Valider la configuration par un test:
 +<code bash>
 +$ ssh -T gitlab
 +Welcome to GitLab, @yoann!
 +</code>
 +
 +Créer un projet à partir d'un dépot existant:
 +
 +<code bash>
 +# Depuis dans le dépot git local
 +cd filez
 +
 +# Commande de création du dépot référence proposée par l'interface Web
 +git push --set-upstream ssh://git@gitlab/yoann/$(git rev-parse --show-toplevel | xargs basename).git $(git rev-parse --abbrev-ref HEAD)
 +</code>
 +
 +===== Modifier la page d'accueil =====
 +
 +Par défaut les utilisateurs non authentifiés sont redirigés sur la page de login. On peut changer ce comportement et proposer la page listant les projets publics.
 +
 +Depuis le compte root:
 +  * ''Menu > admin''
 +  * Une fois le panneau ''Admin Area'' chargé, sélectionner ''Settings > General''
 +  * Déployer la section ''Sign-in restrictions''
 +  * Modifier le champ intitulé ''Home page URL'' avec l' URL souhaitée (%%http://gitlab.fqdn:port/explore%%)
 +  * Valider les modification en via le bouton ''Save changes'' en fin de section
 +
 +
 +===== Déploiement sur serveur distant =====
 +
 +Pour déployer l'instance créée localement sur une machine distante:
 +  * Créer un répertoire pour l'application sur la machine distante. Pour l'exemple ''/path/to/gitlab''
 +  * Copier les fichiers docker-compose.yml et .env
 +  * Exporter et recréer les volumes si on souhaite conserver les données produites sur l'instance de test
 +  * Adapter le docker-compose au nouvel hôte
 +
 +<code bash>
 +# copier le docker-compose.yml et le .env via ssh
 +scp docker-compose.yml .env server.fqdn:/path/to/gitlab
 +
 +# les commandes suivantes utilisent des conteneurs temporaires pour monter les volumes,
 +# écrire leurs données sur la sortie standard, rediriger la sortie standard via un tunnel ssh
 +# sur l’entrée standard du conteneur sur l'hote distant et écrire les données dans
 +# de nouveaux volumes sur le serveur distant:
 +docker container run --rm -v gitlab_config:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_config:/mnt busybox:latest tar -C /mnt -xf-
 +
 +docker container run --rm -v gitlab_logs:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_logs:/mnt busybox:latest tar -C /mnt -xf-
 +
 +docker container run --rm -v gitlab_data:/mnt:ro busybox:latest /bin/tar -C /mnt -cf- . | ssh server.fqdn docker container run --rm -i -v gitlab_data:/mnt busybox:latest tar -C /mnt -xf-
 +</code>
  
  
work_in_progress/gitlab.1637273999.txt.gz · Dernière modification : 2021/11/18 22:19 de yoann