Ruby 运行Chef客户端时,不会拾取食谱中包含的食谱文件

Ruby 运行Chef客户端时,不会拾取食谱中包含的食谱文件,ruby,jenkins,vagrant,chef-infra,chef-recipe,Ruby,Jenkins,Vagrant,Chef Infra,Chef Recipe,在烹饪书中,default.rb是将被挑选/执行的文件。我在default.rb所在的文件夹cookbooks/cookbook\u main/recipes中添加了service.rb。然后,我上传了烹饪书,并在作为节点的远程VM上执行了chef客户端 日志显示它检测到recipes文件夹下的两个rb文件。问题是,执行了default.rb中的脚本,但没有执行service.rb中的脚本。为什么? PS:(厨师新手,如果我错了,请纠正!)因为您的跑步列表中只有cookbook\u main,如

在烹饪书中,
default.rb
是将被挑选/执行的文件。我在default.rb所在的文件夹
cookbooks/cookbook\u main/recipes
中添加了service.rb。然后,我上传了烹饪书,并在作为节点的远程VM上执行了chef客户端

日志显示它检测到recipes文件夹下的两个rb文件。问题是,执行了default.rb中的脚本,但没有执行service.rb中的脚本。为什么?


PS:(厨师新手,如果我错了,请纠正!)

因为您的跑步列表中只有
cookbook\u main
,如下所示:

chef.add_recipe "cookbook_main"
如果您在运行列表中只指定了食谱,而没有指定食谱,Chef将只运行默认食谱。例如,这两条线本质上是等效的:

chef.add_recipe "cookbook_main"
chef.add_recipe "cookbook_main::default"
如果你想运行新的服务配方,你需要告诉厨师运行它。有几种方法可以做到这一点。一种方法是将其显式添加到Vagarant文件中的跑步列表中:

chef.add_recipe "cookbook_main"
chef.add_recipe "cookbook_main::service"
否则,您可以通过默认配方将其包括在内。因此,在default.rb配方的某个地方添加这一行:

include_recipe 'cookbook_main::service'

您的跑步列表设置为什么?这是通过流浪汉吗?跑步输出也会有帮助。跑步列表只有一本名为“cookbook\u main”的食谱。Vagrant第一次启动VM并运行Chef客户端。输出只是没有显示我试图从service.rb安装的rpm,而显示了default.rb中的所有内容。存在的顺序(default.rb和service.rb,或者相反,在recipes文件夹中)重要吗?我建议从官方网站开始。我没有读过任何关于厨师的书,所以我不能推荐任何。