Chef infra 在ubuntu 14.04版上找不到cookbook的资源

Chef infra 在ubuntu 14.04版上找不到cookbook的资源,chef-infra,Chef Infra,我正在尝试使用chef solo使VM具有特定的主机名。chef似乎有一个功能,可以将其他人的菜谱包含在您自己的菜谱中,其中包含复杂的逻辑来解释edgecase场景,例如从平台上删除hostname.sh。当我尝试使用chef solo来应用我的食谱时,出现以下错误 NameError --------- Cannot find a resource for cookbook on ubuntu version 14.04 Cookbook Trace: ---------------

我正在尝试使用chef solo使VM具有特定的主机名。chef似乎有一个功能,可以将其他人的菜谱包含在您自己的菜谱中,其中包含复杂的逻辑来解释edgecase场景,例如从平台上删除hostname.sh。当我尝试使用chef solo来应用我的食谱时,出现以下错误

NameError
---------
Cannot find a resource for cookbook on ubuntu version 14.04


Cookbook Trace:
---------------
  /home/vagrant/chef/cookbooks/op/recipes/default.rb:17:in `from_file'


Relevant File Content:
----------------------
/home/vagrant/chef/cookbooks/op/recipes/default.rb:

 10:  # username is pretty fragile...
 11:  username = File.basename(Dir['/home/*'].first)
 12:  
 13:  file '/etc/motd' do
 14:    content "#{hostname}\n\nThis server does: \n-Dokku"
 15:  end
 16:  
 17>> cookbook 'hostname', '~> 0.4.0'
 18:  
 19:  default_attributes :set_fqdn => '*.project-domain.com'
 20: 
以下是我尝试配置的配方的完整内容: (chef/cookbooks/op/recipes/default.rb)

我怀疑使用主机名所需的代码一定与我目前使用的不同

cookbook 'hostname', '~> 0.4.0'

default_attributes :set_fqdn => '*.project-domain.com'

cookbook'hostname',“~>0.4.0”
行属于您的
metadata.rb
,而不是配方。类似地,
default\u属性
是在角色中设置的,而不是配方。我认为您正在尝试混合和匹配来自不同上下文的API。

有关分配依赖项和包括配方的文档可以在配方文档中找到

“管理基本web应用程序”教程()包括一个步骤,在该步骤中,您可以指定对另一本食谱的依赖关系,并在自己的食谱中使用该食谱中的食谱。查看该教程的第三部分,“确保apt缓存是最新的。”

我创建了一个简单的食谱,其中包括主机名食谱,并在我自己的食谱中使用默认食谱-


-内森

谢谢!我想你几乎肯定是对的。我从中了解到,它确实提到了一个配方(我想),但没有提到metadata.rb。您是否有一个指向某个具有良好metadata.rb的repo的链接,以帮助指示我将文件放在与我的配方相关的位置,以及有效的metadata.rb文件必须采用何种结构?请尝试从头开始,这是我们的实际教程。今后,从2011年开始,尽量不要使用教材;-)我不是有意粗鲁,但我想你不明白有多少人因为厨师的官方文件不充分而被剥夺了选举权。从你的同事那里学习厨师、浏览码头和主要从上述码头学习是一种不同的体验。您甚至不知道在您自己的文档中具体指向哪里来解决这个问题,所以这个问题是一个非常明显的指示器,表明Chef出了问题。谢谢你的否决票,很好的触摸…我不是那个投票否决你的人(我很少在开始的问题上投票,我看了太多的东西而不在乎),我也不为Chef软件工作。我只是运行志愿者用户支持,因为Chef在这方面做得太差了。所以,是的,欢迎你使用5年前的教程,但我不能帮助修复那里的问题。如果你想要更好的支持,试试IRC频道或Slack团队,我会密切关注这两个频道。
cookbook 'hostname', '~> 0.4.0'

default_attributes :set_fqdn => '*.project-domain.com'