找不到食谱
Cookbook apt not found
我已经尝试 运行 我的食谱好几个小时了,并且经历了多个关于相同的问题,但仍然无法让它发挥作用。
sudo chef-solo -c solo.rb -j node.json -o main::default;
我 运行 在我的 cookbooks
文件夹中执行上述命令,该文件夹包含其他食谱,如 apt
、git
等
并且,在 cookbooks/main/recipe/default.rb
内,我包括 include_recipe "apt"
。
每次,我 运行 命令都会收到以下错误:
Cookbook apt not found. If you're loading apt from another cookbook,
make sure you configure the dependency in your metadata
所以我在 cookbooks/main/metadata.rb
中添加了 depends "apt"
。但是现在我收到了这个错误:
Cookbook depends on itself in cookbook apt, please remove this
unnecessary self-dependency
所以作为一个有点无关的答案:你真正需要那个 apt::default
食谱的可能性很小。我们已将食谱中的大部分内容移至 Chef 核心。如果您只想 运行 一个 apt-get update
,请使用 apt_update
资源。
没有更多信息,很难推断问题出在哪里。这是理论上应该如何布置 cookbooks/files 的示例:
您正在编写的所有食谱都在 <dir>/cookbooks/
中。
所有出售的食谱(例如 apt
)都放在 <dir>/vendor/
中。
所以你的结构,在一个非常精简的层次上,可能看起来像这样:
.
├── cookbooks
│ └── main
│ ├── metadata.rb
│ └── recipes
├── solo.rb
└── vendor
└── apt
├── metadata.rb
└── recipes
现在让我们来看看一些单独的文件:
您的 main
食谱的默认食谱:
# cookbooks/main/recipes/default.rb
include_recipe 'apt'
还有您的 main
食谱的元数据文件:
# cookbooks/main/metadata.rb
name 'main'
...
depends 'apt'
请注意 apt
食谱位于 vendor/
中。此处的任何内容都应来自第三方,您不应修改。
从这里开始,您只需确保 solo.rb
正确引用 cookbook_path
属性的两个食谱目录:
# solo.rb
...
cookbook_path ['cookbooks/', 'vendor/']
...
第二个答案,因为这是在 Slack 上诊断出来的,main
食谱的元数据中有 name "apt"
,这使得错误消息令人困惑。
我已经尝试 运行 我的食谱好几个小时了,并且经历了多个关于相同的问题,但仍然无法让它发挥作用。
sudo chef-solo -c solo.rb -j node.json -o main::default;
我 运行 在我的 cookbooks
文件夹中执行上述命令,该文件夹包含其他食谱,如 apt
、git
等
并且,在 cookbooks/main/recipe/default.rb
内,我包括 include_recipe "apt"
。
每次,我 运行 命令都会收到以下错误:
Cookbook apt not found. If you're loading apt from another cookbook, make sure you configure the dependency in your metadata
所以我在 cookbooks/main/metadata.rb
中添加了 depends "apt"
。但是现在我收到了这个错误:
Cookbook depends on itself in cookbook apt, please remove this unnecessary self-dependency
所以作为一个有点无关的答案:你真正需要那个 apt::default
食谱的可能性很小。我们已将食谱中的大部分内容移至 Chef 核心。如果您只想 运行 一个 apt-get update
,请使用 apt_update
资源。
没有更多信息,很难推断问题出在哪里。这是理论上应该如何布置 cookbooks/files 的示例:
您正在编写的所有食谱都在 <dir>/cookbooks/
中。
所有出售的食谱(例如 apt
)都放在 <dir>/vendor/
中。
所以你的结构,在一个非常精简的层次上,可能看起来像这样:
.
├── cookbooks
│ └── main
│ ├── metadata.rb
│ └── recipes
├── solo.rb
└── vendor
└── apt
├── metadata.rb
└── recipes
现在让我们来看看一些单独的文件:
您的 main
食谱的默认食谱:
# cookbooks/main/recipes/default.rb
include_recipe 'apt'
还有您的 main
食谱的元数据文件:
# cookbooks/main/metadata.rb
name 'main'
...
depends 'apt'
请注意 apt
食谱位于 vendor/
中。此处的任何内容都应来自第三方,您不应修改。
从这里开始,您只需确保 solo.rb
正确引用 cookbook_path
属性的两个食谱目录:
# solo.rb
...
cookbook_path ['cookbooks/', 'vendor/']
...
第二个答案,因为这是在 Slack 上诊断出来的,main
食谱的元数据中有 name "apt"
,这使得错误消息令人困惑。