2013-01-31 15 views
6

Veritabanımda bulunan kullanıcı adı ve parolamı kullanarak git repo'umu indirecek bir reçete oluşturmaya çalışıyorum. Bu benim kodumdur ve altında git blokta kimlik bilgilerimi alamadığını söyleyen bir hatadır. Herhangi bir fikir?GIT repo'mdaki HTTPS bağlantısını kullanmak istiyorum ve suçlamalar veri torbalarında

accounts = data_bag_item('databag_name', 'databag_item') 

git "my_repo" do 
    user accounts 
    puts user.inspect 
    repository "https://github.com/my_repo/myrepo.git" 
    reference "branch" 
    destination "/var/www/myrepo" 
    action :sync 
end 

Benim hata oldu:

Expected process to exit with [0], but received '1' 
---- Begin output of git ls-remote https://github.com/my_repo/myrepo.git branch ---- 
STDOUT:  
STDERR: /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:172:in `getpwnam': can't find user for accounts (ArgumentError) 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:172:in `uid' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:92:in `set_user' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:226:in `block in fork_subprocess' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:222:in `fork' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:222:in `fork_subprocess' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:35:in `run_command' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:222:in `run_command' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/shell_out.rb:30:in `shell_out' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/shell_out.rb:35:in `shell_out!' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:222:in `remote_resolve_reference' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:212:in `target_revision' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:68:in `block (2 levels) in define_resource_requirements' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:232:in `call' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:232:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:322:in `block in run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:321:in `each' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:321:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider.rb:128:in `process_resource_requirements' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider.rb:105:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource.rb:597:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:49:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `block (2 levels) in converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `each' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `block in converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection.rb:94:in `block in execute_each_resource' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:116:in `call' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:85:in `step' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection.rb:92:in `execute_each_resource' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:80:in `converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:378:in `converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:420:in `do_run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:176:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application.rb:140:in `run_chef_client' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:274:in `block in run_application' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:267:in `loop' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:267:in `run_application' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application.rb:72:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/bin/chef-client:26:in `<top (required)>' 
    from /usr/bin/chef-client:23:in `load' 
    from /usr/bin/chef-client:23:in `<main>' 
---- End output of git ls-remote https://github.com/my_repo/myrepo.git branch ---- 
Ran git ls-remote https://github.com/my_repo/myrepo.git branch returned 1 

Resource Declaration: 
--------------------- 
# In /var/chef/cache/cookbooks/themes/recipes/default.rb 

 34: git "my_repo" do 
 35:   user "accounts" 
 36:   puts user.inspect 
 37:   repository "https://github.com/my_repo/myrepo.git" 
 38:   reference "branch" 
 39:   destination "/var/www/my_repo" 
 41:   action :sync 
 42: end 
 43:  

Compiled Resource: 
------------------ 
# Declared in /var/chef/cache/cookbooks/themes/recipes/default.rb:34:in `from_file' 

git("my_repo") do 
  provider Chef::Provider::Git 
  action [:sync] 
  retries 0 
  retry_delay 2 
  destination "/var/www/my_repo" 
  revision "branch" 
  remote "origin" 
  cookbook_name "themes" 
  recipe_name "default" 
  user "accounts" 
  repository "https://github.com/my_repo/myrepo.git" 
end 

[2013-01-31T10:12:21+00:00] ERROR: Running exception handlers 
[2013-01-31T10:12:21+00:00] FATAL: Saving node information to /var/chef/cache/failed-run-data.json 
[2013-01-31T10:12:21+00:00] ERROR: Exception handlers complete 
[2013-01-31T10:12:21+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out 
[2013-01-31T10:12:21+00:00] FATAL: Mixlib::ShellOut::ShellCommandFailed: git[my_repo] (themes::default line 34) had an error: Mixlib::ShellOut::ShellCommandFailed: Expected process to exit with [0], but received '1' 
---- Begin output of git ls-remote https://github.com/my_repo/myrepo.git branch ---- 
STDOUT:  
STDERR: /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:172:in `getpwnam': can't find user for accounts (ArgumentError) 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:172:in `uid' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:92:in `set_user' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:226:in `block in fork_subprocess' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:222:in `fork' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:222:in `fork_subprocess' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout/unix.rb:35:in `run_command' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/mixlib-shellout-1.1.0/lib/mixlib/shellout.rb:222:in `run_command' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/shell_out.rb:30:in `shell_out' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/shell_out.rb:35:in `shell_out!' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:222:in `remote_resolve_reference' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:212:in `target_revision' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider/git.rb:68:in `block (2 levels) in define_resource_requirements' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:232:in `call' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:232:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:322:in `block in run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:321:in `each' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/mixin/why_run.rb:321:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider.rb:128:in `process_resource_requirements' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/provider.rb:105:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource.rb:597:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:49:in `run_action' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `block (2 levels) in converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `each' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:81:in `block in converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection.rb:94:in `block in execute_each_resource' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:116:in `call' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:116:in `call_iterator_block' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:85:in `step' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:104:in `iterate' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection/stepable_iterator.rb:55:in `each_with_index' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/resource_collection.rb:92:in `execute_each_resource' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/runner.rb:80:in `converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:378:in `converge' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:420:in `do_run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/client.rb:176:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application.rb:140:in `run_chef_client' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:274:in `block in run_application' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:267:in `loop' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application/client.rb:267:in `run_application' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/lib/chef/application.rb:72:in `run' 
    from /opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-10.18.2/bin/chef-client:26:in `<top (required)>' 
    from /usr/bin/chef-client:23:in `load' 
    from /usr/bin/chef-client:23:in `<main>' 
---- End output of git ls-remote https://github.com/my_repo/myrepo.git branch ---- 
Ran git ls-remote https://github.com/my_repo/myrepo.git branch returned 1 

--- 

Ben databags yoluyla kimlik doğrulama ile github gelen kodumu indirebilirsiniz nasıl gösteren bir örnek kod var mı.

cevap

8

git kaynak user nitelik GitHub'dan kullanıcı adı, ancak depo klonlamak dizinin sahibi olacak bir sistem kullanıcı değildir. Açıkçası, sistem kullanıcısı hesaplarının oluşturulmadığından, bu yüzden hatayı aldınız.

Kişisel git kaynak aşağıdaki gibi görünmelidir:

git "/var/www/myrepo" do 
    repository "[email protected]:username/myrepo.git" #or "https://github.com/my_repo/myrepo.git" 
    revision "HEAD" 
    action :sync 
end 

Ama GitHub üzerinde kimlik doğrulaması için bazı mekanizmalara ihtiyaç duymaktadırlar. Ssh anahtarlarını kullanmanızı öneriyorum çünkü şifrelerinizi doğrulamak için şifrelerinizi saklamanın herhangi bir yolunu bilmiyorum - az miktarda bir süre için sadece caching. this guide on GitHub'a göre bir anahtar çifti oluşturabilirsiniz. Özel anahtarınızı şifreli veri çantasına kaydedebilirsiniz.

{ 
    "id": "mykeys", 
    "private": "[The private key with newlines replaced with \n]", 
    "public": "[The public key with newlines replaced with \n]" 
} 

Sonra ~/.ssh/id_rsa konağın gerçekliğini kontrol atlamak için

keys = Chef::EncryptedDataBagItem.load('databag_name', 'mykeys') 

directory ::File.join(ENV['HOME'], '.ssh') do 
    mode 0755 
end 

file ::File.join(ENV['HOME'], '.ssh', 'id_rsa') do 
    content keys['private'] 
    mode 0600 
end 

'github.com' oluşturmak özel bir anahtar dosyası yeniden reçete içinde veri torbasını kullanabilirsiniz Aşağıdaki içerikle yemek kitabınızda dosya dosyaları/varsayılan/config.

Host github.com 
StrictHostKeyChecking no 
UserKnownHostsFile /dev/null 

Ve reçeteye folowing ekleyin: Eğer root olarak değil depo klonlamak istiyorsanız

cookbook_file ::File.join(ENV['HOME'], '.ssh', 'config') do 
    mode 0644 
end 

, ancak tüm .ssh oluşturmak zorunda sonra başka bir kullanıcı olarak Bu kullanıcının giriş dizinindeki yapılandırma dosyaları.

+1

Bu hala özel git repo'yu klonlamak için tercih edilen yöntem midir? – jmreicha

İlgili konular