当 运行 Chef Client 时,食谱中包含的食谱文件未被提取

Recipe files included in a cookbook are not getting picked up when running Chef Client

在食谱中,default.rb 是将成为 picked/executed 的文件。我在同一文件夹 cookbooks/cookbook_main/recipes 文件夹中添加了 service.rb,其中 default.rb 所在。然后我上传了食谱并在充当节点的远程 VM 上执行了 chef-client。

日志显示它检测到 recipes 文件夹下的两个 rb 文件。这就是问题所在,default.rb 中的脚本已执行,但未执行 service.rb 中的脚本。为什么?

PS:(初学Chef,如有不妥请指正!)

因为您的 run_list 中只有 cookbook_main,所以:

chef.add_recipe "cookbook_main"

当您在 运行 列表中只指定了食谱而没有指定食谱时,Chef 只​​会 运行 默认食谱。例如,这两行本质上是等价的:

chef.add_recipe "cookbook_main"
chef.add_recipe "cookbook_main::default"

如果您想 运行 新的服务食谱,您需要告诉厨师 运行 它。有几种方法可以做到这一点。一种是明确地将其添加到 Vagrantfile 中的 运行 列表中:

chef.add_recipe "cookbook_main"
chef.add_recipe "cookbook_main::service"

否则,您可以通过默认配方添加它。所以在你的 default.rb 食谱的某处添加这一行:

include_recipe 'cookbook_main::service'