Chef infra 如何让厨师运行食谱中的所有食谱,而不明确列出每一个?

Chef infra 如何让厨师运行食谱中的所有食谱,而不明确列出每一个?,chef-infra,Chef Infra,有没有一种方法可以告诉厨师节点运行烹饪书中的所有配方文件,而不必手动将每个配方文件添加到运行列表或从工作站执行其他手动任务 我怀疑可能有一种方法可以在chef客户端执行时查询可用食谱列表,但我不知道ruby命令/语法是什么 在这方面,没有什么特别之处不涉及许多内部API。这可能意味着你的食谱太多了。你想做什么?在烹饪书的默认食谱(default.rb)的下面一行添加 include_recipe "cookbook::recipe" 包括所有这样的食谱和 现在运行chef client,只将c

有没有一种方法可以告诉厨师节点运行烹饪书中的所有配方文件,而不必手动将每个配方文件添加到运行列表或从工作站执行其他手动任务


我怀疑可能有一种方法可以在chef客户端执行时查询可用食谱列表,但我不知道ruby命令/语法是什么

在这方面,没有什么特别之处不涉及许多内部API。这可能意味着你的食谱太多了。你想做什么?

在烹饪书的默认食谱(default.rb)的下面一行添加

include_recipe "cookbook::recipe"
包括所有这样的食谱和
现在运行chef client,只将cookbook名称添加到运行列表中(不要提及菜谱,也可以提及默认菜谱。无论哪种方式都可以)

保存到文件中的目录列表?尝试
find/recipes/directory-typef-maxdepth 1>>runlist.file
或任何适合chef的方法。我想到的第一个想法是创建一个脚本,将include\u菜谱添加到菜谱中每个菜谱的默认菜谱中。以“bash”的方式:`ls-I default.rb-1`中f的
;do echo“包括食谱‘食谱:$f’”;done>default.rb
这意味着默认配方应该只包含这些内容,如果您在ti中有代码,请将其移动到另一个配方。(但这听起来是一个糟糕的模式)通过IRC跟踪用户,他们拒绝了进一步的帮助。我很感谢他们的努力,我真的很感谢。请不要在我的回答中读到任何忘恩负义的话。你们的热心帮助绝对让这个世界和这个社区变得更美好。我只是想对我所问的问题有一个集中的答案。向您提供我的组织、基础架构和工作流程的所有详细信息,以便您能够为我分析我的问题,这比我希望了解的更为复杂。如果一段时间后没有“是”的回答,我会将这个“否”的回答标记为正确。当有人要求“打破API边界规则”时,我需要知道这确实是正确的解决方案,然后再将代码交给他们。否则的话,就是不负责任地把人们暴露在厨师的内部。例如,我可以给你一个Ruby one liner来做这件事,我可以保证它会在Chef 13中被打破,因为当我们在内存中更改cookbook文件数据格式时,我正计划打破它。如果你想要简单的答案,那么不,你不能这样做。如果你想得到真正的答案,你需要确保你想深入到最深处。明白。我并不是在招徕不受支持的黑客,这些黑客将在未来被破解。老实说,我只是不知道什么是或不支持。除了在网站上可以找到什么以外,当你写食谱时,你还不清楚什么是可以得到的(或禁止的)。这些API边界是在哪里定义的?既然我们在讨论这个问题,而且如果它是一个简单的单行程序,那么有没有理由让它成为一个坏主意?像一个运行列表条目,看起来像菜谱[my_cookbook::*]还是什么?