sitio - Cambiar usuario Gitlab CI Runner
gitlab web (4)
Ejecutando ps aux
puedes ver:
/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
El servicio se está ejecutando con la opción --user
.
Así que vamos a cambiar esto, depende de qué distro. lo estas ejecutando Si es systemd, hay un archivo:
/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, cambiemos este archivo ahora:
gitlab-runner uninstall
gitlab-runner install --working-directory /home/ubuntu --user ubuntu
reinicie la máquina o vuelva a cargar el servicio (es decir, systemctl daemon-reload
), y listo!
Actualmente, cuando comienzo una compilación en GitlabCI, se ejecuta bajo el usuario gitlab-runner. Quiero cambiarlo de usuario interno de la empresa. No encontré ningún parámetro para el /etc/gitlab-runner/config.toml que es resolver eso.
Mi configuración actual:
concurrent = 1
[[runners]]
name = "deploy"
url = ""
token = ""
executor = "shell"
Solo para futuras referencias, estaba haciendo una prueba con una versión clonada de mi configuración, si el nombre de dominio no apunta al servidor con el que está trabajando, gitlab podría considerar a sus corredores fuera de línea. Si tiene otra instancia (copiada) ejecutándose en la ip a la que apunta el dominio y no hay un bloqueo de firewall, el comando de verificación gitlab-runner dirá que sus corredores están vivos.
una solución podría ser agregar su dominio que apunta a 127.0.0.1 a su archivo de hosts. Tendrás que reiniciar tu instancia de gitlab y tus corredores.
Tenga en cuenta que al instalar con un usuario específico (--usuario), cada vez que actualice, volverá al script original de systemd y, por lo tanto, volverá a utilizar el usuario gitlab-runner.
para mantener el cambio de usuario en las actualizaciones, usando las modificaciones de systemd (centos7) puede usar estos pasos (asumiendo que el servicio está en /etc/systemd/system/gitlab-runner.service
):
- Cree un directorio
/etc/systemd/system/gitlab-runner.service.d
. Cree un archivo
/etc/systemd/system/gitlab-runner.service.d/exec_start.conf
, con contenido:[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"
Ejecutar
systemctl daemon-reload
Ahora para comprobar que esto está funcionando, puedes hacer esto:
Reinstale el paquete GitLab Runner,
gitlab-runner uninstall
y luegogitlab-runner install
Compruebe
ps aux | grep gitlab
ps aux | grep gitlab
y confirme que el usuario correcto está siendo utilizado
fuente: https://gitlab.com/gitlab-org/gitlab-runner/issues/3675
[RESPUESTA DEPRECADA]
Encontré una solución, que no es el mejor pactrice sino que la resolví. Necesito usar el ejecutor ssh y ssh para localhost. Es necesario agregar gitlab-runner id_rsa.pub a los authorized_keys del usuario que desea usar. Ahí está mi código extendido:
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"