Фон
Репо:
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.