Следуя недавнему руководству по настройке AWS Elastic Beanstalk для развертывания Ruby с помощью Git, я просто настроил среду Elastic Beanstalk с моего CI-сервера. Однако приложение не удалось запустить. Я просмотрел журналы, чтобы обнаружить, что bundle install
не удалось найти сообщение об ошибке.
Извлечение git @github.com: example/private-repository.git Ошибка проверки ключа хоста. фатальный: удаленный конец неожиданно повесил трубку [Ошибка 31mGit: команда
git clone '[email protected]:example/private-repository.git' "/var/app/ondeck/vendor/cache/ruby/1.9.1/cache/bundler/git/private-repository-e4bbe6c2b13bb62664e39e345c1b01d80017934c" --bare --no-hardlinks
в каталоге /var/app/ondeck не удалась. [0m
Gemfile
моего приложения Rails содержит ссылки на gemified plugins, размещенные на пару принадлежащих мне частных репозиториев на Github. Что-то вроде
gem 'somegemname',: git = > 'git @github.com: example/private-repository.git'
У меня возникли аналогичные проблемы с развертываниями Capistrano, которые были решены путем настройки ssh_options[:forward_agent] = true
.
Контейнер Ruby AWS Elastic Beanstalk поддерживает пользовательскую конфигурацию через пользовательские .config
файлы, помещенные под .ebextensions
. Будет ли в этом случае помощь SSG для прямого агента? Существуют ли другие альтернативы для доступа к частному хранилищу Github при запуске среды с эластичным beanstalk?
Обновление 1:
Я просто проверил для пользователя, с которым инициирован bundle install
. Выяснилось, что script /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh
запускает bundle install
как root
пользователя. Я попытался создать SSH-ключ в /root/.ssh
и добавил его в ключ-ключ к ключам Github Deploy для этого репозитория. Пока не повезло. Теперь попробуем добавить SSH pub-key в мою учетную запись пользователя в Github, чтобы она применима ко всем частным репозиториям, доступным через мою учетную запись Github.