2016-05-02 10 views
1

gitoliteからプライベートgitリポジトリを複製しようとしています。 git 2.8.1をインストールし、シェフ12.9を使用しています。シェフのgitリソースが自分のリポジトリに認証するために使用できるSSHラッパーを作成しようとしています。トラブルChefのクローニングプライベートレポ(テストキッチンを使用)

.... 
file "/tmp/ssh_wrapper.sh" do 
    content "#!/bin/sh\nexec /usr/bin/ssh -i #{/tmp/key.pem} \"[email protected]\"" 
    user "root" 
    group "root" 
    mode "0700" 
    action :create 
end 
git "/home/some_repo" do 
    repository "[email protected]:some_repo.git" 
    revision "1.0.0" 
    user "root" 
    group "root" 
    ssh_wrapper "/tmp/ssh_wrapper.sh" 
    action :sync 
end 
.... 

テストキッチンを使用してgit repoに同期しようとすると、次のエラーが発生します。

================================================================================ 
      Error executing action `sync` on resource 'git[/home/some_repo]' 
      =========================================================================== ===== 

      Mixlib::ShellOut::ShellCommandFailed 
      ------------------------------------ 
      Expected process to exit with [0], but received '128' 
      ---- Begin output of git ls-remote "[email protected]:some_repo.git" "1.0.0*" ---- 
      STDOUT: 
      STDERR: Host key verification failed. 
      fatal: Could not read from remote repository. 

      Please make sure you have the correct access rights 
      and the repository exists. 
      ---- End output of git ls-remote "[email protected]:some_repo.git" "1.0.0*" ---- 
      Ran git ls-remote "[email protected]:some_repo.git" "1.0.0*" returned 128 

      Resource Declaration: 
      --------------------- 
      # In /tmp/kitchen/cookbooks/version_control/definitions/some_git_repo.rb 

      33: git "/home/some_repo" do 
      34:  repository "[email protected]:some_repo.git" 
      35:  revision "1.0.0" 
      36:  user "root" 
      37:  group "root" 
      38:  ssh_wrapper "/tmp/ssh_wrapper.sh" 
      39:  action :sync 
      40: end 
      41: # Remote the SSH private key 

      Compiled Resource: 
      ------------------ 
      # Declared in /tmp/kitchen/cookbooks/version_control/definitions/some_git_repo.rb:33:in `block in from_file' 

      git("/home/some_repo") do 
      params {:owner=>"root", :group=>"root", :mode=>"700", :revision=>"1.0.2", :path=>"/home/", :name=>"some_repo"} 
      action [:sync] 
      retries 0 
      retry_delay 2 
      default_guard_interpreter :default 
      destination "/home/some_repo" 
      enable_checkout true 
      revision "1.0.0" 
      remote "origin" 
      ssh_wrapper "/tmp/ssh_wrapper.sh" 
      checkout_branch "deploy" 
      declared_type :git 
      cookbook_name :version_control 
      recipe_name "test" 
      repository "[email protected]:some_repo.git" 
      user "root" 
      group "root" 
      end 

      Platform: 
      --------- 
      x86_64-linux 


     Running handlers: 
     [2016-05-02T21:27:02+00:00] ERROR: Running exception handlers 
     Running handlers complete 
     [2016-05-02T21:27:02+00:00] ERROR: Exception handlers complete 
     Chef Client failed. 22 resources updated in 02 minutes 10 seconds 
     [2016-05-02T21:27:02+00:00] FATAL: Stacktrace dumped to /tmp/kitchen/cache/chef-stacktrace.out 
     [2016-05-02T21:27:02+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report 
     [2016-05-02T21:27:02+00:00] ERROR: git[/home/some_repo] (version_control::test line 33) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '128' 
     ---- Begin output of git ls-remote "[email protected]:some_repo.git" "1.0.0*" ---- 
     STDOUT: 
     STDERR: Host key verification failed. 
     fatal: Could not read from remote repository. 

     Please make sure you have the correct access rights 
     and the repository exists. 
     ---- End output of git ls-remote "[email protected]:some_company.git" "1.0.0*" ---- 
     Ran git ls-remote "[email protected]:some_repo.git" "1.0.0*" returned 128 
     [2016-05-02T21:27:02+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 
>>>>>> Converge failed on instance <test-add-some-repo-ubuntu-1404>. 
>>>>>> Please see .kitchen/logs/test-add-some-repo-ubuntu-1404.log for more details 
>>>>>> ------Exception------- 
>>>>>> Class: Kitchen::ActionFailed 
>>>>>> Message: SSH exited (1) for command: [sh -c ' 

sudo -E /opt/chef/bin/chef-solo --config /tmp/kitchen/solo.rb --log_level auto --force-formatter --no-color --json-attributes /tmp/kitchen/dna.json 
'] 
>>>>>> ---------------------- 

gitリソースのドキュメントによれば、ssh_wrapperプロパティはGIT_SSH環境変数を設定します。私は...

GIT_SSH=/tmp/ssh_wrapper.sh git ls-remote "[email protected]:some_repo.git" "1.0.0*" 

をテストキッチンによる放浪仮想マシンのセットアップにログインし、次のコマンドを実行すると...私は、リポジトリへのアクセスを得ることができています。

私はいくつかのスタックオーバーフローポストでソリューションを試してみましたが、成功しませんでした。

GIT_SSH=/tmp/ssh_wrapper.sh git ls-remote "[email protected]:some_repo.git" "1.0.0*" 

Chef git cookbook: how to fix permission denied while cloning private repo?How to pull private git repo using chef from gitoliteChef deploy_resource private repo, ssh deploy keys and ssh_wrapper、私も実行し試してみましたgit error while deploying through chef

... ...のbashを使用して、リソースを実行します。

なぜこのリポジトリを複製できないのかわかりません。私はここで基本的なものを見逃しているようですが、私は本当に何がわかりません。どんな助けでも大歓迎です。

答えて

1

SSHラッパーは、ホスト鍵の検証を無効にする必要があります。またはknown_hostsファイルを事前に設定する必要があります。あなたのためにこれをすべて処理するapplication_git料理の本を調べてください。

+0

ありがとうございました。興味のある人のために、私はssh_wrapperファイルを更新して以下を含むようにしました。 ファイル "/tmp/ssh_wrapper.sh" do 内容 "#!/ bin/sh \ nexec/usr/bin/ssh -i#{/ tmp/key.pem} -o UserKnownHostsFile =/dev/null -o StrictHostKeyChecking = no \ "$ @ \" " ユーザー" root " グループ" root " モード" 0700 " アクション:作成 end – PaulM

関連する問題