【问题标题】:Chef Solo error: Cookbook apt not foundChef Solo 错误:找不到食谱
【发布时间】:2013-03-08 00:23:39
【问题描述】:

Hy 我正在尝试在 Amazon EC2 Linux AMI 上使用 Chef Solo 运行 MongoDB 配方。 我已经安装了 Omnibus,在 .rb 文件中设置了说明书路径,在 .json 文件中设置了运行列表。我已经将 mongodb recipe zip 的内容从 github 复制到了 cookbook 文件夹,并运行了 chef-solo 命令。 结果如下:

致命:Chef::Exceptions::CookbookNotFound:找不到食谱。如果您从另一本食谱加载 apt,请确保在元数据中配置依赖项

我对 Linux 也很陌生,我在这里做错了什么?

【问题讨论】:

    标签: mongodb amazon-ec2 chef-infra chef-solo


    【解决方案1】:

    该错误非常具有描述性。您的运行列表中可能有一本说明书,其 metadata.rb 文件中包含 depends apt

    幸运的是,这很容易解决 - 只需将 apt 食谱 (https://github.com/opscode-cookbooks/apt) 包含在您的 cookbooks 文件夹中,然后在您的运行列表(或角色,当您达到该级别时)中调用它。

    【讨论】:

    • 它在我的本地 Ubuntu 上运行良好,但在 Amazon EC2 上仍然无法运行。我猜是因为它没有apt。其中一个错误是: 错误:执行[apt-get-update](apt::default line 22)有一个错误:没有这样的文件或目录 - apt-get update;设置了ignore_failure,继续猜测这没什么大不了的,因为它会继续。第二个是: * package[update-notifier-common] action install * 没有指定版本,也没有可用于 update-notifier-common 的候选版本 我已经把 apt 食谱的自述文件弄红了,但它没有说什么需要指定。
    • 看起来 EC2 上没有 apt,你不应该把它放在你的运行列表中(如果 mongodb 在 EC2 上也需要它,那么只有说明书存在)
    • 是的,我试图以这种方式安装 MongoDB 配方,我得到的错误消息是:- * package[mongo-10gen-server] action install * 没有指定版本,也没有候选版本可用于 mongo-10gen-server - 这很奇怪,因为在运行时,运行列表中的默认配方不是 10gen 的。这与我之前的问题有关还是完全不同? :S
    【解决方案2】:

    如果您使用的是 chef-solo,请确保您的 solo.rb 指向正确的食谱位置。我将其设置为:

    cookbook_path "/root/chef-repo/cookbooks"
    

    代替:

    cookbook_path "/home/ubuntu/chef-repo/cookbooks"
    

    【讨论】:

      【解决方案3】:

      Karishma 是正确的 in her answer,但我想扩展它并通过跳过绝对路径使其更具动态性。这是我的实现:

      root = File.absolute_path(File.dirname(__FILE__))
      file_cache_path root
      cookbook_path root + '/cookbooks'
      

      它将路径设置为您放置 solo.rb 文件的任何位置。

      【讨论】:

        【解决方案4】:

        这发生在我身上,因为我忘了先运行librarian-chef install

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-01-23
          • 1970-01-01
          • 2015-04-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多