Gitlab CI - implantar via SSH no servidor remoto


12

Eu tenho um ambiente Gitlab usando o Gitlab CI, para um novo projeto testemunhar sobre os arquivos compilados e copiar via rsync para um servidor de produção.

A máquina onde a compilação desses recursos é exec é uma imagem do docker (nó 6), mas agora tenho que copiar os arquivos resultantes desse comando Docker do contêiner para o servidor usando linux ... Meu problema é conectar via ssh através rsync.

Atualmente, tenho o seguinte:

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 isso eu estou recebendo:

    /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
Há algo que eu não entendo aqui: você está gerando uma nova chave ssh em tempo real a cada compilação, não? Onde está o ponto de usar ssh leys whrn you.need pwd para implantar a chave pub?
Lrkwz

Como @lrkwz, também estou perdendo o ponto de enviar uma nova chave a cada build, quando você será solicitado a fornecer uma senha de qualquer maneira. Além disso, eu adoraria ver o arquivo authorized_keys no servidor remoto ...
Fábio Duque Silva

Respostas:


3

O ssh-copy-id está pedindo uma senha. Você pode usar sshpass -ee definir a variável de ambiente SSHPASS no Gitlab.


Você pode adicionar um exemplo também?
Yashu Mittal

1

Você não está passando a chave ssh para o rsync. Você deve fazer algo assim que execute o comando ssh para identificar corretamente a chave ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.