tło
Repos:
myrepo
, na własnym serwerze gitlab, w prywatnym repozytorium z (przetestowanymi) kluczami wdrażaniamainrepo
, na własnym serwerze gitlab, w prywatnym repozytorium, które działa dobrze.
Odwołania do pliku package.json myrepo
:
"dependencies": {
"myrepo": "git+ssh://git@gitlab.myhost.com:myusernamespace/myrepo.git"
}
mainrepo
Jest stosowane do AWS Elastyczny beanstalk przykład bez żadnych problemów.
Problem
Problem polega na tym, że proces kompilacji instancji Elastic Beanstalk kończy się niepowodzeniem, ponieważ nie ma uprawnień dostępu do serwera gitlab
Szczegóły błędu
W dzienniku internetowego interfejsu 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.
W 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.
Poprzednia praca
Aby umożliwić Gitlabsom obsługę repozytoriów przez ssh, dodałem publiczny klucz ssh do kluczy wdrażania Gitlabs dla projektu (i zweryfikowałem klucze za pomocą git clone git@gitlab.myhost.com:myusernamespace/myrepo.git
)
Następnie, aby umożliwić dostęp do elastycznej fasoli do Gitlab, dodałem ten sam klucz publiczny do środowiska, tworząc 01_authorized_keys.config
w 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
Ale się nie udało :(
Alternatywy wypróbowane
Inne rzeczy, których próbowałem:
- Konfigurowanie kluczy poprzez powtórzenie ich
authorized_keys
zgodnie z tą odpowiedzią - Dodanie klucza publicznego, który już był w uprawnionym_kluczach do listy wdrażania Gitlabs.
Założenia
eb deploy
użyje ebextension, nawet jeśli nie są- Powinienem dodać klucz publiczny do instancji EB
- Nie skonfigurowałem innej instancji testowej, aby zbudować cały projekt z tylko kluczami wdrażania gitlab, więc zakładam, że jeśli klucze delit gitlab działają ręcznie, będą działały przez npm.