首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Chef::NoMethodError::Application中的Chef-Resource

Chef::NoMethodError::Application中的Chef-Resource
EN

Stack Overflow用户
提问于 2013-02-12 01:21:36
回答 3查看 4.5K关注 0票数 2

我有一个工作的Vagrant实例,现在正在尝试使用Chef/Vagrant的"application“cookbook,以便能够从git进行部署,并获得以下错误消息:

代码语言:javascript
复制
FATAL: NoMethodError: undefined method `path' for
 Chef::Resource::Application

当然,"path“是"application”配方中不可或缺的一部分。如果我将其注释掉,下一个属性将显示相同的消息。

我已确保metadata.rb包含以下行:

代码语言:javascript
复制
depends 'application'

我还重新加载了vagrant实例,以确保所有更改都能传播并运行"berks update“。我应该在哪个方向上搜索这个错误的原因?

Vagrantfile是非常标准的文件,主要包括:

代码语言:javascript
复制
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

而部署配方包含

代码语言:javascript
复制
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只是:

代码语言:javascript
复制
depends 'apt'
depends 'python'
depends 'application'
depends 'application_python'
depends 'postgresql'
EN

回答 3

Stack Overflow用户

发布于 2014-02-12 12:58:50

我遇到了一个非常类似的问题。在我的例子中,解决的方法是删除我在抛出异常的块中使用的一个不正确的变量。

例如,下面是抛出:

代码语言:javascript
复制
ark "apachesolr-drupal" do
  url node['solri']['drupal']['url']
  version node['solr']['drupal']['version']
  path "/tmp"  
  action :put
end

和..。

代码语言:javascript
复制
NoMethodError
-------------
No resource or method named `ark' for `Chef::Recipe "drupal"'

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

代码语言:javascript
复制
ark "apachesolr-drupal" do
  url node['solr']['drupal']['url']
  version node['solr']['drupal']['version']
  path "/tmp"
  action :put
end
票数 1
EN

Stack Overflow用户

发布于 2013-02-13 17:31:21

这听起来像是一些非常基本的错误,因为你已经启动的调试过程,即注释掉path命令并基本上得到相同的错误,没有太多意义。

我会仔细检查您对vagrant和您的环境的假设-您的cookbook目录中是否有正确的食谱结构和依赖项,您是否指定了正确的属性,chef-solo的输出中是否有任何线索?我发现,在厨师的输出中,通常会有一个微妙的迹象,说明哪里出了问题。

如果所有这些都失败了,那么复习一下失败的食谱的来源通常是有用的。

票数 0
EN

Stack Overflow用户

发布于 2014-04-15 20:45:46

我遇到了一个非常类似的问题。在我的例子中,解决的方法是删除我在抛出异常的块中使用的一个不正确的变量。

检查chef资源语法!

代码语言:javascript
复制
git "#{node['customscripts']['dir']}" do
  repository node['customscripts']['url']
  reference node['customscripts']['ref']
  action :sync
  user root
  group root
end

通过向用户和组添加报价进行修复:

代码语言:javascript
复制
git "#{node['customscripts']['dir']}" do
  ... 
  user "root"
  group "root"
end

Chef版本为:

代码语言:javascript
复制
chef-client --version
Chef: 11.10.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14817368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档