我有一个工作的Vagrant实例,现在正在尝试使用Chef/Vagrant的"application“cookbook,以便能够从git进行部署,并获得以下错误消息:
FATAL: NoMethodError: undefined method `path' for
Chef::Resource::Application当然,"path“是"application”配方中不可或缺的一部分。如果我将其注释掉,下一个属性将显示相同的消息。
我已确保metadata.rb包含以下行:
depends 'application'我还重新加载了vagrant实例,以确保所有更改都能传播并运行"berks update“。我应该在哪个方向上搜索这个错误的原因?
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"]
endmetadata.rb只是:
depends 'apt'
depends 'python'
depends 'application'
depends 'application_python'
depends 'postgresql'发布于 2014-02-12 12:58:50
我遇到了一个非常类似的问题。在我的例子中,解决的方法是删除我在抛出异常的块中使用的一个不正确的变量。
例如,下面是抛出:
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发布于 2013-02-13 17:31:21
这听起来像是一些非常基本的错误,因为你已经启动的调试过程,即注释掉path命令并基本上得到相同的错误,没有太多意义。
我会仔细检查您对vagrant和您的环境的假设-您的cookbook目录中是否有正确的食谱结构和依赖项,您是否指定了正确的属性,chef-solo的输出中是否有任何线索?我发现,在厨师的输出中,通常会有一个微妙的迹象,说明哪里出了问题。
如果所有这些都失败了,那么复习一下失败的食谱的来源通常是有用的。
发布于 2014-04-15 20:45:46
我遇到了一个非常类似的问题。在我的例子中,解决的方法是删除我在抛出异常的块中使用的一个不正确的变量。
检查chef资源语法!
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"
endChef版本为:
chef-client --version
Chef: 11.10.0https://stackoverflow.com/questions/14817368
复制相似问题