2013-02-11 180 views
2

我有一個工作流浪實例,目前嘗試使用「應用程序」食譜與廚師/放浪,要能夠從git的部署和收到此錯誤信息:廚師 - NoMethodError在廚師::資源::應用

FATAL: NoMethodError: undefined method `path' for 
Chef::Resource::Application 

當然,「路徑」是「應用程序」配方的組成部分。如果我將它註釋掉,則下一個屬性將顯示相同的消息。

我確信,metadata.rb包含行:

depends 'application' 

我也重裝流浪漢實例,以確保所有更改傳播就跑「伯克斯更新」。我應該向哪個方向尋找導致此錯誤的原因?

Vagrantfile是非常標準的,而且大多包括:

config.vm.provision :chef_solo do |chef| 
    chef.json = { 
     :mysql => { 
     :server_root_password => 'rootpass', 
     :server_debian_password => 'debpass', 
     :server_repl_password => 'replpass' 
     }, 
     :postgresql => { 
     :password => { 
      :postgres => "rootpass" 
     } 
     }, 
    } 

    chef.run_list = [ 
     "recipe[iw-app::default]", 
     "recipe[iw-app::db]", 
     "recipe[iw-app::deploy]" 
    ] 
    end 

雖然部署配方包含

user "#{node[:ii][:user]}" do 
    system true 
end 

application node[:ii][:app_name] do 
    path  node[:ii][:deploy_to] 
    owner  node[:ii][:user] 
    group  node[:ii][:group] 
    repository node[:ii][:repo][:url] 
    revision node[:ii][:repo][:branch] 
    deploy_key node[:ii][:repo][:deploy_key] 
    packages ["git"] 
end 

metadata.rb只是:

depends 'apt' 
depends 'python' 
depends 'application' 
depends 'application_python' 
depends 'postgresql' 
+0

您可以發佈您Vagrantfile相關的部分? – 2013-02-12 20:51:45

+0

流氓文件是非常標準的,這裏是主要部分: config.vm.provision:chef_solo do | chef | chef.json = { :MySQL的=> { :server_root_password => 'rootpass', :server_debian_password => 'debpass', :server_repl_password => 'replpass' }, :在PostgreSQL => { :密碼=> { :postgres的=> 「rootpass」 } }, } chef.run_list = [ 「配方[IW應用內::默認]」, 「配方[IW應用內::分貝]」 , 「recipe [iw-app :: deploy]」 ] – AlexA 2013-02-13 06:46:04

+0

添加更多細節發佈說明。 – AlexA 2013-02-13 06:52:07

回答

0

這聽起來像漂亮的東西基本錯誤是因爲您已經開始調試過程,即註釋掉path命令和基本上得到相同的錯誤,並沒有太大的意義。

我會經過並檢查你對流浪者和你的環境的假設 - 你的食譜目錄中是否有正確的食譜結構和依賴關係,你是否指定了正確的屬性,廚師獨奏輸出中是否有任何線索?我發現在廚師的輸出中通常會有微妙的跡象表明出現了什麼問題。

失敗的一切,通常是有用的,通過失敗的食譜來源。

1

我有一個非常類似的問題。在我的情況下,解決這個問題的方法是刪除我在引發異常的塊內使用的錯誤變量。

例如下面被扔:

ark "apachesolr-drupal" do 
    url node['solri']['drupal']['url'] 
    version node['solr']['drupal']['version'] 
    path "/tmp" 
    action :put 
end 

與...

NoMethodError 
------------- 
No resource or method named `ark' for `Chef::Recipe "drupal"' 

node['solri']['drupal']['url']未設置了以下工作:

ark "apachesolr-drupal" do 
    url node['solr']['drupal']['url'] 
    version node['solr']['drupal']['version'] 
    path "/tmp" 
    action :put 
end 
0

我有一個非常相似的問題。在我的情況下,解決這個問題的方法是刪除我在引發異常的塊內使用的錯誤變量。

檢查廚師資源語法!

git "#{node['customscripts']['dir']}" do 
    repository node['customscripts']['url'] 
    reference node['customscripts']['ref'] 
    action :sync 
    user root 
    group root 
end 

修復用雙引號添加到用戶和組:

git "#{node['customscripts']['dir']}" do 
    ... 
    user "root" 
    group "root" 
end 

廚師的版本是:

chef-client --version 
Chef: 11.10.0