web-dev-qa-db-fra.com

Authentification Git dans Chef

Lors du déploiement d'une application avec Chef, j'ai la base de code à cloner à partir d'un référentiel privé github avec la ressource suivante:

git '/mnt/application' do
    repository '[email protected]:organization/repository'

    reference 'master'
    action :sync

    user node.application.user
    group node.application.user
end

Cependant, après avoir analysé la documentation de la ressource git, je ne vois pas comment vous fournissez le fichier de clé pour l'authentification. Je suis également confus quant à la manière de stocker cette clé dans un sac de données, car le fichier contient un tas de nouvelles lignes. Des idées?

27
L. Adamek
ssh_wrapper "ssh -i /some/path/id_rsa"

Au cas où quelqu'un rencontrerait cela, ce qui précède n'a pas fonctionné pour moi, j'ai continué à avoir l'erreur:

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

En spécifiant ssh_wrapper, vous définissez la variable d'environnement GIT_SSH. Il s'avère que vous ne pouvez pas fournir de paramètres dans la variable d'environnement GIT_SSH (voir clonez Git avec un SSH personnalisé à l'aide de l'erreur GIT_SSH ).

Au lieu de cela, vous devez d'abord écrire votre script dans un fichier, puis y définir GIT_SSH.

Alors:

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

Et changez la partie ressource git pour:

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

Nous utilisons la même configuration pour Mercurial, mais cela devrait être la même chose avec Git, je l’espère.

Nous utilisons des clés ssh pour nous authentifier. La clé est stockée dans un databag chiffré (les nouvelles lignes étant remplacées par "\ n"). Tout d'abord, cette clé privée est créée sur le nœud à partir de databag.

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

Et ensuite, utilisez-le pour vous connecter au référentiel git avec 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
12
Draco Ater

Je suis passé par le même problème, la seule chose qui me manquait était cette commande alors tout s'est bien passé:

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

Vous trouverez la référence et toutes mes étapes sur mon blog: http://www.sadafnoor.com/blog/simplest-way-to-write-your-chef-cookbook-that-git-clone-private-private-repo -using-bitbucket-deploy-key/

1
sadaf2605

si vous êtes dans une distribution linux, stockez votre clé ssh dans <your home directory>/.ssh et ajoutez github.com à <your home directory>/.ssh/known_hosts

Vous pouvez ajouter github.com à known_hosts en utilisant la commande suivante

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

Ceci fait, vous pouvez cloner votre rapport à l'aide de la ressource git du chef

0
Vineeth Guna

Sur la base de conseil de sadaf2605 , c’était le moyen le plus simple pour moi.

git '/path/to/destination' do
  environment 'GIT_SSH_COMMAND' => 'ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -i /path/to/private_key'
  repository '[email protected]:your/repo.git'
  reference 'master'
  action :sync
  user 'vagrant'
  group 'vagrant'
end
0
Molotoff