Gitlab CI: despliegue a través de SSH en un servidor remoto


12

Tengo un entorno Gitlab con Gitlab CI, para un nuevo proyecto para testificar sobre los archivos compilados y copiarlos a través de rsync a un servidor de producción.

La máquina donde la compilación de estos recursos es exec es una imagen de docker (nodo 6), pero ahora tengo que copiar los archivos resultantes de ese comando Docker del contenedor al servidor usando Linux ... Mi problema es conectarme a través de ssh a través de rsync.

Actualmente tengo lo siguiente:

stages:
  - deploy

before_script:
    - npm i
    - npm run build

job_deploy:
  stage: deploy
  script:
    - ssh-keygen -t rsa -b 4096 -C '' -f ~/.ssh/deploy_rsa
    - ssh-keyscan -H 8.8.8.8 >> ~/.ssh/known_hosts
    - ssh-copy-id -i ~/.ssh/deploy_rsa.pub $SERVER_USER@8.8.8.8
    - rsync -avuz $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
  only:
    - master

Por esto estoy obteniendo:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
    Permission denied, please try again.
    Permission denied, please try again.
    Permission denied (publickey,password).

3
Hay algo que no entiendo aquí: estás generando una nueva clave ssh sobre la marcha cada compilación no? ¿Dónde está el punto de usar ssh leys cuando you.need pwd para implementar la clave pub?
lrkwz

Al igual que @lrkwz, también me falta el punto de enviar una nueva clave en cada compilación, cuando de todos modos se le pedirá una contraseña. Además, me encantaría ver el archivo autorizado_claves en el servidor remoto ...
Fábio Duque Silva

Respuestas:


3

ssh-copy-id está pidiendo una contraseña. Puede usar sshpass -ey establecer la variable de entorno SSHPASS en Gitlab.


¿Puedes agregar un ejemplo también?
Yashu Mittal

1

No está pasando la clave ssh a rsync. Debería hacer algo como esto que ejecuta el comando ssh para identificar correctamente la clave ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.