Git аутентификация у шеф-повара
При развертывании приложения с шеф-поваром у меня есть набор кода, который нужно клонировать из частного репозитория github со следующим ресурсом:
git '/mnt/application' do
repository '[email protected]:organization/repository'
reference 'master'
action :sync
user node.application.user
group node.application.user
end
Однако после сканирования документации для ресурса git
я не вижу, как вы поставляете ключевой файл для аутентификации. Я также смущен тем, как хранить этот ключ в пакете данных, поскольку файл содержит кучу новых строк. Любые идеи?
Ответы
Ответ 1
ssh_wrapper "ssh -i /some/path/id_rsa"
В случае, если кто-то сталкивается с этим, вышеупомянутое не сработало для меня, я все время получал ошибку:
error: cannot run ssh -i /some/path/id_rsa: No such file or directory
То, что указывает ssh_wrapper, это установить переменную среды GIT_SSH, и оказывается, что вы не можете предоставить параметры в переменной среды GIT_SSH (см. Git клон с пользовательским SSH, используя Ошибка GIT_SSH).
Вместо этого вам нужно сначала записать ваш script в файл, а затем установить GIT_SSH.
Итак:
file "/some/path/git_wrapper.sh" do
owner "your_user"
mode "0755"
content "#!/bin/sh\nexec /usr/bin/ssh -i /some/path/id_rsa \"[email protected]\""
end
И измените ресурсную часть git на:
git "/opt/mysources/couch" do
repository "git://git.apache.org/couchdb.git"
reference "master"
action :sync
ssh_wrapper "/some/path/git_wrapper.sh"
end
Ответ 2
Мы используем аналогичную настройку для Mercurial, но она должна быть одинаковой с Git, надеюсь.
Мы используем ключи ssh для аутентификации. Ключ хранится в зашифрованном каталоге данных (с заменой новых строк на "\n" ). Прежде всего этот закрытый ключ создается на node из базы данных.
git_key = Chef::EncryptedDataBagItem.load( "private_keys", "git_key" )
file "/some/path/id_rsa" do
content git_key['private']
end
И затем используйте его при подключении к репозиторию git с помощью ssh_wrapper:
git "/opt/mysources/couch" do
repository "git://git.apache.org/couchdb.git"
reference "master"
action :sync
ssh_wrapper "ssh -i /some/path/id_rsa" #the path to our private key file
end
Ответ 3
если вы находитесь в дистрибутиве linux, сохраните свой ssh-ключ в <your home directory>/.ssh
и добавьте github.com в <your home directory>/.ssh/known_hosts
Вы можете добавить github.com в known_hosts, используя следующую команду
ssh-keyscan -H github.com >> <your home directory>/.ssh/known_hosts
После этого вы можете клонировать свое репо, используя git
ресурс шеф-повара
Ответ 4
Я прошел через ту же проблему, Единственная вещь, которую мне не хватало, была эта команда, тогда все прошло хорошо:
GIT_SSH_COMMAND="ssh -i ~/.ssh/bitbucket_rsa"
Ссылка и все мои шаги можно найти в моем блоге: http://www.sadafnoor.com/blog/simplest-way-to-write-your-chef-cookbook-that-git-clone-private-repo-using-bitbucket-deploy-key/
Ответ 5
Вы должны попробовать эту кулинарию https://github.com/poise/application_git. Он решает проблему, о которой вы говорили.
В этой кулинарной книге вы можете использовать ресурс application_git
, специфицировать закрытый ключ:
application_git '/srv/myapp' do
repository '[email protected]:organization/repository'
deploy_key '/some/path/id_rsa'
end