如何在opswork上解决Chef :: Exceptions :: CookbookNotFound ERROR

时间:2013-10-09 10:57:51

标签: chef chef-recipe chef-solo aws-opsworks

我正在尝试在opwswork上安装自定义食谱。所以我将FFMPEG COOKBOOK克隆到我的存储库并执行更新cookbook,然后使用命令ffmpeg :: package执行ffmpeg配方。但我总是得到如下错误

  

[Wed,09 Oct 2013 10:49:29 +0000] DEBUG:通过include_recipe加载Recipe ffmpeg :: package   [Wed,09 Oct 2013 10:49:29 +0000]错误:执行自定义配方时遇到异常:ffmpeg :: package:Chef :: Exceptions :: CookbookNotFound - 找不到Cookbook ffmpeg - / opt / aws / opsworks / releases /20130926122929_138/vendor/bundle/ruby/1.8/gems/chef-0.9.15.5/bin/../lib/chef/cookbook/cookbook_collection.rb:38:in initialize' /opt/aws/opsworks/releases/20130926122929_138/vendor/bundle/ruby/1.8/gems/ohai-6.16.0/lib/ohai/mash.rb:77:in call'   /opt/aws/opsworks/releases/20130926122929_138/vendor/bundle/ruby/1.8/gems/ohai-6.16.0/lib/ohai/mash.rb:77:in'default'

3 个答案:

答案 0 :(得分:1)

看起来OpsWorks没有在您的存储库中找到您的食谱。

您的cookbook存储库是什么样的? 例如,Opsworks只查看一个repo,所有的cookbook都需要是该repo的子文件夹。

cookbooks <-- repo root
 -nginx    <--cookbook
  --attributes
  --definitions
  --files
  --recipes
  --templates
 -ffmpeg   <--cookbook
  --attributes
  --libraries
  --recipes
  --templates

我觉得在我的本地机器上安装厨师并使用完整的厨师仓库并在我的cookbook文件夹中创建一个单独的git仓库是最容易的。这样我就可以用刀来下载我的食谱。

knife cookbook site download ffmpeg
tar -xvzf .\ffmpeg-0.2.1.tar.gz -C .\cookbooks

然后我将我的cookbook存储库推送到我的git服务器(我正在使用github)并运行Update Cookbooks命令。

这一切还取决于您将ffmpeg配方包含在哪个步骤中,OpsWorks文档将比我更好地解释它。 http://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-executing.html

答案 1 :(得分:0)

您需要将该菜谱上传到您的存储库,以确保

knife cookbook upload --all

仔细检查您的coookbook(ffmeg)是否已上传

knife cookbook list

虽然你下载了源代码或你的“网站安装”coookbook你还需要上传它

答案 2 :(得分:0)

查看部署部分以验证“update_custom_cookbooks”是否成功。

过去我的烹饪书从未更新过。

此问题的最佳解决方案是启动新实例以验证配方是否正确运行。新实例将使用新的烹饪书。