tło

Repos:

  • myrepo, na własnym serwerze gitlab, w prywatnym repozytorium z (przetestowanymi) kluczami wdrażania
  • mainrepo, na własnym serwerze gitlab, w prywatnym repozytorium, które działa dobrze.

Odwołania do pliku package.json myrepo:

"dependencies": {
    "myrepo": "git+ssh://[email protected]:myusernamespace/myrepo.git"
}

mainrepoJest 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 [email protected]:myusernamespace/myrepo.git Cloning into bare repository '/tmp/.npm/_git-remotes/git-git-myhost-com-myysername-myrepo-git-99d4209c'... npm ERR! git clone [email protected]:myusernamespace/myrepo.git Host key verification failed. npm ERR! git clone [email protected]:myusernamespace/myrepo.git fatal: Could not read from remote repository. npm ERR! git clone [email protected]:myusernamespace/myrepo.git npm ERR! git clone [email protected]: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 [email protected]: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.configw 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...} [email protected]

Ale się nie udało :(

Alternatywy wypróbowane

Inne rzeczy, których próbowałem:

  • Konfigurowanie kluczy poprzez powtórzenie ich authorized_keyszgodnie 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.
Ashley Coolman
źródło