SSH для развертывания машины и запуска файла Python выдает ошибку, не найденную, даже если она существует - PullRequest
0 голосов
/ 16 мая 2018

Я изменил пароль пользователя (давайте назовем его staging_user), который gitlab-runner будет использовать для входа на другой компьютер, на котором работает промежуточный сервер,

и в .gitlab-ci.yml

staging_deploy:
  stage: deploy
  variables:
    SSH_EXEC: "ssh staging_user@staging_server"
    DEPLOY_PATH: "/home/staging_user/project_site"
  only:
    - staging
  script:
    - ${SSH_EXEC} "if [ -d ${DEPLOY_PATH} ]; then \rm -r ${DEPLOY_PATH}/*; else mkdir -p ${DEPLOY_PATH}; fi"
    - echo -e ${GITSSHKEY} > conf/.ssh/id_rsa
    - scp -r * staging-user@staging_server://home/staging_user/project_site/
    - ${SSH_EXEC} "cd ${DEPLOY_PATH}/; docker-compose build --no-cache --force-rm; docker-compose up -d"
    - ${SSH_EXEC} "docker exec website_staging python /var/www/website.com/src/manage.py collectstatic --no-input"

gitlab-runner работает на машине git01 и оттуда gitlab-runner ssh для staging_server пользователь является staging_user (см. Значение SSH_EXEC выше)

Я заметил, что GITSSHKEY - это переменная, хранящаяся на gitlabпроект под: gitlab.com/test_group/project_site/settings/ci_cd.Поэтому я считаю, что нужно обновить этот ключ SSH, но я немного запутался и не уверен, где запустить ssh-keygen для генерации нового ключа и вставить его, запускаю ли я ssh-keygen на git01, откуда gitlab-runner ssh'ingили на staging_server машине.

Я получаю это ошибка :

Service 'web' failed to build: error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net/registry-v2/docker/registry/v2/blobs/sha256/0a/0a2bad7da9b55f3121f0829de061f002ef059717fc2ed23c135443081200000e/data?Expires=1526503430&Signature=LZNRPPcqYzFoeE94jHgdxyN7gONaewh3ZF2688IVPhrOFKt-DB20gcSZIytqiDff8Hk7CS60SFKoROkU4VWMroByNqAcrFeMJGEAG-GKSSLXKPqQUsxYeXyW5rRGGbC8CqARQKsj1GBR-fTvRstcrnfhQVrn9gv~IFtqRXNB-LM_&Key-Pair-Id=APKAJECH5M7VWIS5YZ6Q: net/http: TLS handshake timeout
website_web_1 is up-to-date
$ ${SSH_EXEC} "ls -lh /var/www/website.com/src/manage.py"
-rw-rw-r-- 1 staging_user staging_user 280 May 15 16:26 /var/www/website.com/src/manage.py
$ ${SSH_EXEC} "docker exec website_web_1 python /var/www/website.com/src/manage.py collectstatic --no-input"
python: can't open file '/var/www/website.com/src/manage.py': [Errno 2] No such file or directory

1 Ответ

0 голосов
/ 16 мая 2018

Примечание относительно первоначального вопроса: изменение пароля не должно влиять на ключ ssh, поскольку оно зависит от открытого ключа, находящегося на удаленном сервере ~staging_user/.ssh/authorized_keys.

Генерация нового ключа ssh необходима наисходный компьютер (тот, который будет запускать ssh на удаленном компьютере), и вам потребуется сначала развернуть открытый ключ в удаленном файле ~staging_user/.ssh/authorized_keys.

После обсуждения OP Ciasto piekarz состояния в комментариях :

Я обнаружил, что если контейнер уже запущен, мы получим эту ошибку, но если мы остановим работающий контейнер и обновим веткуесли gitlab-runner запустит конвейер, то развертывание пройдет успешно

...