Подтвердить что ты не робот

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 я не вижу, как вы поставляете ключевой файл для аутентификации. Я также смущен тем, как хранить этот ключ в пакете данных, поскольку файл содержит кучу новых строк. Любые идеи?

4b9b3361

Ответ 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 ресурс шеф-повара

Ответ 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