web-dev-qa-db-ja.com

ChefでのGit認証

Chefを使用してアプリケーションをデプロイするときに、次のリソースを使用してプライベートgithubリポジトリからクローンを作成するようにコードベースを設定しました。

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

    reference 'master'
    action :sync

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

ただし、ドキュメントでgitリソースをスキャンした後、認証用のキーファイルをどのように提供するかがわかりません。ファイルにはたくさんの新しい行が含まれているため、このキーをデータバッグに保存する方法についても混乱しています。何か案は?

26
L. Adamek
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エラーを使用したカスタムSSHを使用したGitクローン を参照)。

代わりに、最初にスクリプトをファイルに書き込んでから、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 \"$@\""
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
27
psamaan

Mercurialにも同様の設定を使用していますが、Gitでも同じである必要があります。

認証にはsshキーを使用します。キーは暗号化されたデータバッグに保存されます(改行は「\ n」に置き換えられます)。まず、この秘密鍵はデータバッグからノード上に作成されます。

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

そして、ssh_wrapperを使用してgitリポジトリに接続するときにそれを使用します。

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

私は同じ問題を経験しました、私が欠けていたのはこのコマンドだけでした、そしてすべてがうまくいきました:

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 /

1
sadaf2605

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リソースを使用してリポジトリのクローンを作成できます

0
Vineeth Guna

hint by sadaf2605 に基づくと、これが私にとって最も簡単な方法でした。正しいユーザー/グループを設定し、StrictHostKeyCheckingをオフにする必要がありました。

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