2013-02-11 239 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