запуск задания на сервере с использованием ssh-ключа

#docker #ssh #gitlab-ci

#docker #ssh #gitlab-ci

Вопрос:

Я хочу развернуть на этом сервере serverBNP-prod1 Я попытался написать этот код ниже. Используя этот код, куда я должен добавить свой локальный ключ ssh, пожалуйста?

Спасибо

 job_deploy_prod:
stage: deploy
only:
 - master
 - tags
when: manual
environment:
name: prod
variables:
SERVER: serverBNP-prod1
SSH_OPTS: -p 22 -l udoc -o BatchMode=true -o StrictHostKeyChecking=no
script:
- export VERSION=$(fgrep -m 1 -w version pom.xml | sed -re 's/^.*>(.*)<.*$/1/')
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.gitlab.com"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker rm -f proj"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker pull registry.gitlab.com/bnp/proj:$VERSION"
- ssh $SSH_OPTS -i $HOME/.ssh/id_rsa $SERVER "docker run -d -p 8080:8080 -e 'SPRING_PROFILES_ACTIVE=prod' -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone --name proj registry.gitlab.com/bnp/proj:$VERSION"
  

Теги:
— prod

Ответ №1:

Вы можете либо:

  • используйте Settings / CI-CD / Variable типа File , в который вы будете помещать данные своего закрытого ключа, или
  • если у вас есть только имя пользователя и пароль для вашего сервера, вы можете использовать команду «sshpass» и указать переменную SSHPASS среды, все еще в разделе переменных CI-CD

Более подробную информацию о том, как использовать переменные среды GitLab CI / CD (тип файла, безопасность и т.д.), Можно найти здесь: https://docs.gitlab.com/ce/ci/variables /

Вы можете маскировать переменные, но имейте в виду, что, в отличие от Jenkins, невозможно удалить кнопку «Показать значение», когда пользователь имеет достаточные права в Gitlab для просмотра / редактирования настроек, поэтому вам придется тщательно выбирать права на свой проект, например, предоставляя другим людям права разработчика, но безсопровождающий (который позволяет редактировать настройки).