【问题标题】:How to resolve Chef::Exceptions::CookbookNotFound ERROR on opswork如何解决 opswork 上的 Chef::Exceptions::CookbookNotFound ERROR
【发布时间】:2026-01-09 13:20:06
【问题描述】:

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

[2013 年 10 月 9 日星期三 10:49:29 +0000] 调试:通过 include_recipe 加载配方 ffmpeg::package [2013 年 10 月 9 日星期三 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:incall' /opt/aws/opsworks/releases/20130926122929_138/vendor/bundle/ruby/1.8/gems/ohai-6.16.0/lib/ohai/mash.rb:77:in `default'

【问题讨论】:

  • 据我了解,您似乎没有在 Vagrantfile 中注册食谱
  • 您找到解决此问题的方法了吗?请不要忘记将答案标记为正确! :)

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


【解决方案1】:

OpsWorks 似乎没有在您的存储库中找到您的说明书。

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

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

我发现在我的本地机器上安装 chef 并使用完整的 chef-repo 并在我的 cookbooks 文件夹中创建一个单独的 git repo 是最简单的。这样我就可以用刀下载我的食谱了。

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

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

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

【讨论】:

  • 我重命名了 COOKBOOK 文件夹,现在它工作正常。谢谢
【解决方案2】:

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

knife cookbook upload --all

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

knife cookbook list

虽然您下载了源代码或“站点安装”食谱,但您仍然需要上传它

【讨论】:

    【解决方案3】:

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

    我过去曾遇到过食谱从未更新过的问题。

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

    【讨论】:

      最近更新 更多