忽略 Chef 中的所有重启请求
Ignoring all reboot requests in Chef
我正在使用 Packer 和 Chef 构建管道。我的厨师 运行 列表中有一堆第 3 方食谱,其中大部分都要求重新启动。发生这种情况时,整个厨师 运行 都会停下来,打包程序会出错并用核弹攻击机器。
有没有办法在 chef 运行 期间忽略所有重启请求?我想在 运行 结束时重新开始,而不是在它期间。到目前为止我看到的唯一解决方案是编辑食谱并注释掉重启。
编辑:我正在使用来自 github 的 dotnetframework 食谱,它正在使用 "reboot" 资源。
没有很好的方法来全局捕获所有重启请求并将它们从立即设置为延迟。您的两个选择是编辑然后维护您依赖的每本第 3 方食谱的私有版本,并让它们设置一个全局重启标志,该标志在您的聚合结束时进行处理,或者覆盖 reboot
中的资源 windows 食谱,以便它设置一个标志,然后在最后处理该标志。
两者都需要制作您自己的内部分叉,而且都不是一个很好的选择。更好的方法是询问您为什么需要那些第 3 方食谱,以及您是否可以自己编写一个更简化的流程来按照您需要的方式处理重启。
您可以对 reboot
资源进行 monkeypatch 以使用无操作提供程序:
Chef::Provider::Noop.provides(:reboot)
Chef::Provider::Noop.provides(:windows_reboot)
我正在使用 Packer 和 Chef 构建管道。我的厨师 运行 列表中有一堆第 3 方食谱,其中大部分都要求重新启动。发生这种情况时,整个厨师 运行 都会停下来,打包程序会出错并用核弹攻击机器。
有没有办法在 chef 运行 期间忽略所有重启请求?我想在 运行 结束时重新开始,而不是在它期间。到目前为止我看到的唯一解决方案是编辑食谱并注释掉重启。
编辑:我正在使用来自 github 的 dotnetframework 食谱,它正在使用 "reboot" 资源。
没有很好的方法来全局捕获所有重启请求并将它们从立即设置为延迟。您的两个选择是编辑然后维护您依赖的每本第 3 方食谱的私有版本,并让它们设置一个全局重启标志,该标志在您的聚合结束时进行处理,或者覆盖 reboot
中的资源 windows 食谱,以便它设置一个标志,然后在最后处理该标志。
两者都需要制作您自己的内部分叉,而且都不是一个很好的选择。更好的方法是询问您为什么需要那些第 3 方食谱,以及您是否可以自己编写一个更简化的流程来按照您需要的方式处理重启。
您可以对 reboot
资源进行 monkeypatch 以使用无操作提供程序:
Chef::Provider::Noop.provides(:reboot)
Chef::Provider::Noop.provides(:windows_reboot)