是否有办法强制执行最后一个配方,无论它放在运行列表中的哪个位置?
例如,如果我有食谱说cookbook_y:post和扩展的运行列表是x1 :: x2 y1 :: y2 cookbook_y :: post z1 :: z2,我想在运行时修改扩展的运行列表(从食谱中,很可能是在cookbook_y :: post中)并将其执行推到最后。
在排序中我想在客户端运行期间动态实现这一点x1 :: x2 y1 :: y2 z1 :: z2 cookbook_y :: post
实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
这并不是Chef支持的。您可以使用延迟通知的技巧,如下所示:
package 'foo' do
action :nothing
delayed_action :install
end
但是必须在每个资源上进行,并且无法在不同的延迟通知之间进行排序(它们按照预定的顺序发生),因此您最终可能会遇到问题"我需要将其作为最后一个 - iesr比最后一件事"我们不会为你解决这个问题。
答案 1 :(得分:0)
如果您希望在Chef-client运行的最后一个中移动的那个食谱必须在收敛后执行任务,那么您可能希望查看Chef处理程序。
将该配方转换为处理程序库将确保仅在收敛后调用特定的代码片段。正如您可能知道的那样,厨师在厨师运行结束时会召集处理程序。