强制将配方推送到CHEF中run_list的末尾?

时间:2017-05-03 19:08:42

标签: chef devops

是否有办法强制执行最后一个配方,无论它放在运行列表中的哪个位置?

例如,如果我有食谱说cookbook_y:post和扩展的运行列表是x1 :: x2 y1 :: y2 cookbook_y :: post z1 :: z2,我想在运行时修改扩展的运行列表(从食谱中,很可能是在cookbook_y :: post中)并将其执行推到最后。

在排序中我想在客户端运行期间动态实现这一点x1 :: x2 y1 :: y2 z1 :: z2 cookbook_y :: post

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

这并不是Chef支持的。您可以使用延迟通知的技巧,如下所示:

package 'foo' do
  action :nothing
  delayed_action :install
end

但是必须在每个资源上进行,并且无法在不同的延迟通知之间进行排序(它们按照预定的顺序发生),因此您最终可能会遇到问题"我需要将其作为最后一个 - iesr比最后一件事"我们不会为你解决这个问题。

答案 1 :(得分:0)

如果您希望在Chef-client运行的最后一个中移动的那个食谱必须在收敛后执行任务,那么您可能希望查看Chef处理程序。

将该配方转换为处理程序库将确保仅在收敛后调用特定的代码片段。正如您可能知道的那样,厨师在厨师运行结束时会召集处理程序。