gitlab CI разные ключи SSL для разных серверов, как? - PullRequest
0 голосов
/ 24 января 2020

У меня есть gitlab-ci.yml, в котором есть это содержимое:

before_script:
    # Setup SSH deploy keys
    - which ssh-agent || ( apt-get install -qq openssh-client )
    - eval $(ssh-agent -s)
    - bash -c 'ssh-add <(echo "$KEY1")'
    - bash -c 'ssh-add <(echo "$KEY2")'
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan ec2-xxx-xxx-xxx-xx1.eu-west-2.compute.amazonaws.com >> ~/.ssh/known_hosts
    - ssh-keyscan ec2-xx-xxx-xxx-xx2.eu-west-2.compute.amazonaws.com >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

// more stuff that tests the code

staging:
    type: deploy
    script:
        - shell/deploy_s_staging_ci.sh
    only:
        - tags
            - s_staging

В моей среде хранятся $ KEY1 и $ KEY2.

Последняя строка моего Локальный сценарий оболочки развертывания выглядит следующим образом:

scp -v -i "~/.ssh/example.pem" s_etl_deploy.tgz  \
ec2-user@ec2-xxx-xxx-xxx-xxx.eu-west-2.compute.amazonaws.com:/home/ec2-user/etl/

Как это изменить, чтобы выбрать конкретный ключ SSL, скажем, KEY1, в средстве выполнения gitlb CI docker, чтобы использовать его в команда scp?

1 Ответ

0 голосов
/ 25 января 2020

Вероятно, вы должны сделать возможным выбор между обеими клавишами. Например, использование переменных позволяет достичь этой цели.

.use_ssh_key:
  before_script:
    # Setup SSH deploy keys
    - which ssh-agent || ( apt-get install -qq openssh-client )
    - eval $(ssh-agent -s)
    - bash -c 'ssh-add <(echo "$KEY_TO_USE")'
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - ssh-keyscan ec2-xxx-xxx-xxx-xx1.eu-west-2.compute.amazonaws.com >> ~/.ssh/known_hosts
    - ssh-keyscan ec2-xx-xxx-xxx-xx2.eu-west-2.compute.amazonaws.com >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
    - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

// more stuff that tests the code

staging:
  extends: .use_ssh_key
  variables:
    KEY_TO_USE: $KEY1
  type: deploy
  script:
    - shell/deploy_s_staging_ci.sh
  only:
    - tags
        - s_staging

Затем вы можете просто расширить эту конфигурацию и определить KEY_TO_USE в зависимости от вашей работы.

...