Gitlab CI - Wdróż za pośrednictwem SSH na zdalnym serwerze

12

Mam środowisko Gitlab korzystające z Gitlab CI, aby nowy projekt zeznał o skompilowanych plikach i skopiował przez rsync na serwer produkcyjny.

Maszyna, na której budowana jest ta wersja zasobów, jest obrazem dokera (węzeł 6), ale teraz muszę skopiować pliki wynikowe z tego polecenia kontenera Docker na serwer przy użyciu systemu Linux ... Moim problemem jest połączenie za pośrednictwem ssh przez rsync.

Obecnie mam następujące:

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 [email protected]
    - rsync -avuz $CI_PROJECT_DIR/dist/ [email protected]:/var/wwww/example.com
  only:
    - master

W ten sposób otrzymuję:

    /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).
Rodrigo Moreno
źródło
3
Jest coś, czego nie rozumiem tutaj: generujesz nowy klucz ssh w locie, każda kompilacja nie jest? Gdzie jest sens używania ssh leys whrn you.need pwd do wdrożenia klucza pub?
lrkwz
Podobnie jak @lrkwz, brakuje mi też sensu wysyłania nowego klucza do każdej kompilacji, kiedy i tak zostaniesz poproszony o hasło. Chciałbym też zobaczyć plik Author_keys na zdalnym serwerze ...
Fábio Duque Silva

Odpowiedzi:

3

ssh-copy-id prosi o hasło. Możesz użyć sshpass -ei ustawić zmienną środowiskową SSHPASS w Gitlab.

użytkownik1973167
źródło
Czy możesz też dodać przykład?
Yashu Mittal,
1

Nie przekazujesz klucza ssh do rsync. Powinieneś zrobić coś takiego, co wykonuje polecenie ssh, aby poprawnie zidentyfikować klucz ssh:

rsync -avuz -e 'ssh -i ~/.ssh/deploy_rsa' $CI_PROJECT_DIR/dist/ [email protected]:/var/wwww/example.com
Yaşar Şentürk
źródło