Autenticación Git en Chef

Al implementar una aplicación con Chef, tengo la base de código configurada para ser clonada desde un repository github privado con el siguiente recurso:

git '/mnt/application' do repository 'git@github.com:organization/repository' reference 'master' action :sync user node.application.user group node.application.user end 

Sin embargo, después de escanear la documentation del recurso git , no puedo ver cómo se proporciona el file key para la authentication. También estoy confundido en cuanto a cómo almacenar esta key en una bolsa de datos, ya que el file contiene un montón de líneas nuevas. ¿Algunas ideas?

 ssh_wrapper "ssh -i /some/path/id_rsa" 

En caso de que alguien se encuentre con esto, lo anterior no funcionó para mí, seguí recibiendo el error:

 error: cannot run ssh -i /some/path/id_rsa: No such file or directory 

Lo que especifica ssh_wrapper es establecer la variable de entorno GIT_SSH, y resulta que no se pueden proporcionar parameters en la variable de entorno GIT_SSH (ver clon de Git con SSH personalizado usando el error GIT_SSH ).

En cambio, primero tendría que escribir su secuencia de commands en un file, y luego configurarlo en un file GIT_SSH.

Asi que:

 file "/some/path/git_wrapper.sh" do owner "your_user" mode "0755" content "#!/bin/sh\nexec /usr/bin/ssh -i /some/path/id_rsa \"$@\"" end 

Y cambie la parte del recurso git a:

 git "/opt/mysources/couch" do repository "git://git.apache.org/couchdb.git" reference "master" action :sync ssh_wrapper "/some/path/git_wrapper.sh" end 

Usamos la configuration similar para Mercurial, pero debería ser lo mismo con Git, espero.

Usamos keys ssh para autenticar. La key se almacena en una bolsa de datos cifrada (con nuevas líneas reemplazadas por "\ n"). En primer lugar, esta key privada se crea en el nodo de la bolsa de datos.

 git_key = Chef::EncryptedDataBagItem.load( "private_keys", "git_key" ) file "/some/path/id_rsa" do content git_key['private'] end 

Y luego úsela cuando se conecte al repository de git usando 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 

si está en una distribución de Linux, almacene su key ssh en <your home directory>/.ssh y agregue github.com a <your home directory>/.ssh/known_hosts

Puede agregar github.com a known_hosts usando el siguiente command

ssh-keyscan -H github.com >> <your home directory>/.ssh/known_hosts

Después de hacer esto, puede clonar su repository usando el recurso git de chef

Pasé por el mismo problema, lo único que me faltaba era este command, entonces todo salió bien:

 GIT_SSH_COMMAND="ssh -i ~/.ssh/bitbucket_rsa" 

La reference y para mis pasos completos se pueden encontrar en mi blog: http://www.sadafnoor.com/blog/simplest-way-to-write-your-chef-cookbook-that-git-clone-private-repo-using -bitbucket-deploy-key /

Deberías probar este libro de cocina https://github.com/poise/application_git . Resuelve el problema que mencionaste.

Con este libro de cocina, puede usar el recurso application_git , especificando la key privada:

 application_git '/srv/myapp' do repository 'git@github.com:organization/repository' deploy_key '/some/path/id_rsa' end