如何检查Chef是否包含/应用配方

时间:2016-12-01 09:59:09

标签: chef

我有一个包含postgresql::server的包装食谱。在另一本食谱中,我想检查是否应用了该食谱。使用node.recipe? 'postgresql::server'我无法测试。

我如何与Chef一起做这件事?

3 个答案:

答案 0 :(得分:3)

尝试node['recipes'].include? 'postgresql::server'

根据the code,您的node.recipe?应该使用最新版本。

答案 1 :(得分:0)

出于完整性考虑: 原则上,node.recipe?是正确的选择。

但是在厨师运行的编译阶段中,node['recipes']最初只会在您明确定义的运行列表中包含配方。 它将在编译阶段完成,每发生include_recipe次。

因此: 如果您的node.recipe? 'postgresql::server'在编译前先于include_recipe 'postgresql::server'被求值,它将返回false

答案 2 :(得分:-1)

从这里开始:https://docs.chef.io/run_lists.html

knife status --run-list

knife status "role:web" --run-list

希望这有帮助。

谢谢,蒂姆。