web-dev-qa-db-fra.com

Changer d'utilisateur Gitlab CI Runner

Actuellement, lorsque je lance une construction dans GitlabCI, celle-ci est exécutée sous l'utilisateur gitlab-runner. Je veux changer l'utilisateur interne de l'entreprise. Je n'ai trouvé aucun paramètre dans le fichier /etc/gitlab-runner/config.toml qui résout ce problème.

Ma configuration actuelle: 

concurrent = 1
[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "Shell"
17
PumpkinSeed

En cours d'exécution ps aux, vous pouvez voir:

/usr/bin/gitlab-ci-multi-runner run --working-directory /home/gitlab-runner --config /etc/gitlab-runner/config.toml --service gitlab-runner --syslog --user gitlab-runner

Le service fonctionne avec l'option --user.

Alors changeons ceci, cela dépend de quelle distribution. vous l'exécutez. Si systemd, il y a un fichier:

/etc/systemd/system/gitlab-runner.service:

[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/bin/gitlab-ci-multi-runner "run" "--working-directory" "/home/gitlab-runner" "--config" "/etc/gitlab-runner/config.toml" "--se

Bingo, changeons ce fichier maintenant:

gitlab-runner uninstall

gitlab-runner install --working-directory /home/ubuntu --user ubuntu

redémarrez la machine ou rechargez le service (c.-à-d. systemctl daemon-reload), et voilà!

38
Thomas Decaux

Notez que lors de l'installation avec un utilisateur spécifique (--user), chaque fois que vous mettez à jour, il retourne au script systemd d'origine et revient donc à utiliser gitlab-runner user.

afin de conserver les modifications des utilisateurs entre les mises à jour, à l'aide des remplacements systemd (centos7), vous pouvez utiliser les étapes suivantes (en supposant que le service est à /etc/systemd/system/gitlab-runner.service):

  1. Créez un répertoire /etc/systemd/system/gitlab-runner.service.d.
  2. Créez un fichier /etc/systemd/system/gitlab-runner.service.d/exec_start.conf, avec le contenu:

    [Service]
    ExecStart=
    ExecStart=/usr/lib/gitlab-runner/gitlab-runner "run" "--working-directory" "/home/ubuntu" "--config" "/etc/gitlab-runner/config.toml" "--service" "gitlab-runner" "--syslog" "--user" "ubuntu"
    
  3. Exécuter systemctl daemon-reload


Maintenant, pour vérifier si cela fonctionne, vous pouvez le faire:

  1. Réinstallez le paquet GitLab Runner gitlab-runner uninstall puis gitlab-runner install

  2. Vérifier ps aux | grep gitlab et confirmer que le bon utilisateur est utilisé

source: https://gitlab.com/gitlab-org/gitlab-runner/issues/3675

2
rptmat57

J'ai trouvé une solution, qui n'est pas le meilleur pactrice mais l'a résolu. J'ai besoin d'utiliser l'exécuteur SSH et SSH à localhost. Il est nécessaire d’ajouter gitlab-runner id_rsa.pub à ce que vous voulez utiliser. Il y a mon code étendu:

concurrent = 1

[[runners]]
  name = "deploy"
  url = ""
  token = ""
  executor = "ssh"
  [runners.ssh]
    user = "user"
    Host = "localhost"
    port = "22"
    identity_file = "/home/gitlab-runner/.ssh/id_rsa"
2
PumpkinSeed

Juste pour référence future, je faisais un test avec une version clonée de ma configuration. Si le nom de domaine ne pointe pas vers le serveur sur lequel vous travaillez, gitlab pourrait considérer vos coureurs hors ligne. Si vous avez une autre instance (copiée) en cours d'exécution sur l'adresse IP pointée sur le domaine et qu'il n'y a pas de pare-feu bloquant, la commande gitlab-runner verify dira que vos coureurs sont en vie.

une solution pourrait être d'ajouter votre domaine pointant vers 127.0.0.1 à votre fichier hosts. vous devrez redémarrer votre instance et vos coureurs gitlab.

0
SomeOne_01