Gitlab CI: distribuire tramite SSH sul server remoto


12

Ho un ambiente Gitlab usando Gitlab CI, per un nuovo progetto per testimoniare sui file compilati e copiarli tramite rsync su un server di produzione.

La macchina in cui la build di queste risorse è exec è un'immagine di docker (nodo 6), ma ora devo copiare i file risultanti dal comando Docker di quel contenitore sul server usando Linux ... Il mio problema è connettermi via ssh attraverso rsync.

Attualmente ho il seguente:

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

Con questo sto ottenendo:

    /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
C'è qualcosa che non sottolineo qui: stai generando una nuova chiave ssh al volo ogni build non lo è? Qual è il punto di usare i file SSH whrn you.need pwd per distribuire la chiave pub?
lrkwz,

Come @lrkwz, mi manca anche il punto di inviare una nuova chiave su ogni build, quando ti verrà comunque chiesta una password. Inoltre, mi piacerebbe vedere il file authorized_keys sul server remoto ...
Fábio Duque Silva,

Risposte:


3

ssh-copy-id richiede una password. Puoi usare sshpass -ee impostare la variabile d'ambiente SSHPASS in Gitlab.


Puoi aggiungere anche un esempio?
Yashu Mittal,

1

Non stai passando la chiave ssh a rsync. Dovresti fare qualcosa del genere che esegue il comando ssh per identificare correttamente la chiave ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.