Gitlab CI - Розгортання через SSH на віддалений сервер


12

У мене є середовище Gitlab, що використовує Cit Gitlab, для нового проекту, який свідчить про складені файли та копіює через rsync на виробничий сервер.

Машина, на якій виконується збірка цих ресурсів, - це зображення докера (вузол 6), але тепер мені доведеться скопіювати отримані файли з цієї контейнерної команди Docker на сервер за допомогою Linux ... Моя проблема полягає в підключенні через ssh через rsync.

На даний момент у мене є:

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

Цим я отримую:

    /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
Тут я не підкреслюю те, що ви створюєте новий ключ ssh на льоту, будь-яка збірка не є? Звідки сенс використання ssh leys whrn you.need pwd для розгортання ключа pub?
lrkwz

Як і @lrkwz, я також пропускаю точку надсилання нового ключа при кожній збірці, коли ви все одно будете просити пароль. Також я хотів би побачити файл дозволених_кісів на віддаленому сервері ...
Fábio Duque Silva

Відповіді:


3

ssh-copy-id запитує пароль. Ви можете використовувати sshpass -eта встановлювати змінну середовища SSHPASS у Gitlab.


Чи можете ви також додати приклад?
Яшу Міттал

1

Ви не передаєте ключ ssh для rsync. Вам слід зробити щось подібне, яке виконує команду ssh, щоб правильно ідентифікувати ключ ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ $SERVER_USER@8.8.8.8:/var/wwww/example.com
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.