2

Фон

Репо:

  • myrepo , на собственном сервере gitlab, в частном репозитории с (протестированными) ключами развертывания
  • mainrepo , на собственном сервере gitlab, в частном репо, который работает нормально.

Его package.json ссылается на myrepo следующим образом:

"dependencies": {
    "myrepo": "git+ssh://git@gitlab.myhost.com:myusernamespace/myrepo.git"
}

mainrepo без проблем разворачивается в экземпляре beanstalk AWS Elastic.

проблема

Проблема в том, что процесс сборки на экземпляре Elastic beanstalk завершается сбоем, поскольку у него нет прав доступа к серверу gitlab.

Детали ошибки

В журнале веб-интерфейса AWS

2016-02-04 13:36:59 UTC+0000    ERROR   During an aborted deployment, some instances may have deployed the new application version. To ensure all instances are running the same version, re-deploy the appropriate application version.
2016-02-04 13:36:59 UTC+0000    ERROR   Failed to deploy application.
2016-02-04 13:36:58 UTC+0000    ERROR   Unsuccessful command execution on instance id(s) 'i-111111f'. Aborting the operation.
2016-02-04 13:36:58 UTC+0000    INFO    Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].
2016-02-04 13:36:58 UTC+0000    ERROR   [Instance: i-111111f] Command failed on instance. Return code: 1 Output: [CMD-AppDeploy/AppDeployStage0/AppDeployPreHook/50npm.sh] command failed with error code 1: /opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh + /opt/elasticbeanstalk/containerfiles/ebnode.py --action npm-install npm ERR! git clone git@gitlab.myhost.com:myusernamespace/myrepo.git Cloning into bare repository '/tmp/.npm/_git-remotes/git-git-myhost-com-myysername-myrepo-git-99d4209c'... npm ERR! git clone git@gitlab.myhost.com:myusernamespace/myrepo.git Host key verification failed. npm ERR! git clone git@gitlab.myhost.com:myusernamespace/myrepo.git fatal: Could not read from remote repository. npm ERR! git clone git@gitlab.myhost.com:myusernamespace/myrepo.git npm ERR! git clone git@gitlab.myhost.com:myysername/ref.

В nodejs.log:

353 error Host key verification failed.
353 error fatal: Could not read from remote repository.
353 error
353 error Please make sure you have the correct access rights
353 error and the repository exists.

Предыдущая работа

Чтобы позволить Gitlabs обслуживать репозитории через ssh, я добавил открытый ключ ssh к ключам развертывания Gitlabs для проекта (и подтвердил ключи с помощью git clone git@gitlab.myhost.com:myusernamespace/myrepo.git)

Затем, чтобы разрешить Elastic beanstalk доступ к Gitlab, я добавил тот же открытый ключ в среду, создав 01_authorized_keys.config в ebextensions:

files:
  /home/ec2-user/.ssh/authorized_keys:
    mode: "000400"
    owner: ec2-user
    group: ec2-user
    content: |
      ssh-rsa AAAA{...the existing eb authorized_keys...} existing_authorized_keys_name
      ssh-rsa AAAA{...gitlab.pub...} me@myhost.com

Но это не удалось :(

Альтернативы пробовали

Другие вещи, которые я пробовал:

  • Настройка ключей, отображая их в authorized_keys ключи согласно этому ответу
  • Добавление открытого ключа, который уже был в author_keys, в список развертывания Gitlabs.

Предположения

  • eb deploy будет использовать ebextensions, даже если они не
  • Я должен добавить открытый ключ к экземпляру EB
  • Я не настраивал другой тестовый экземпляр для сборки всего проекта только с ключами развертывания gitlab, поэтому я предполагаю, что если ключи gitlab deloy работают вручную, они будут работать через npm.

0