厨师 - NoMethodError在厨师::资源::应用
问题描述:
我有一个工作流浪实例,目前尝试使用“应用程序”食谱与厨师/放浪,要能够从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'
答
这听起来像漂亮的东西基本错误是因为您已经开始调试过程,即注释掉path
命令和基本上得到相同的错误,并没有太大的意义。
我会经过并检查你对流浪者和你的环境的假设 - 你的食谱目录中是否有正确的食谱结构和依赖关系,你是否指定了正确的属性,厨师独奏输出中是否有任何线索?我发现在厨师的输出中通常会有微妙的迹象表明出现了什么问题。
失败的一切,通常是有用的,通过失败的食谱来源。
答
我有一个非常类似的问题。在我的情况下,解决这个问题的方法是删除我在引发异常的块内使用的错误变量。
例如下面被扔:
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
答
我有一个非常相似的问题。在我的情况下,解决这个问题的方法是删除我在引发异常的块内使用的错误变量。
检查厨师资源语法!
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
您可以发布您Vagrantfile相关的部分? – 2013-02-12 20:51:45
流氓文件是非常标准的,这里是主要部分: 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
添加更多细节发布说明。 – AlexA 2013-02-13 06:52:07