如何从Chef中的自定义处理程序调用配方

时间:2014-06-03 03:57:06

标签: chef chef-solo

对于调用任何配方,使用“include_recipe”方法。我创建了一个异常处理程序,我在其中调用回滚方法。但是,它不起作用。以下是我的代码:

require 'chef/log'
require 'time'

module TEST
  class ExceptionHandler < Chef::Handler
    def report      
      if run_status.failed? then
        Chef::Log.info("Running Report handler for failed client run...")        
        Chef::Log.info("Formatted Exception: "+run_status.formatted_exception)
        //here i want to call rollback recipe
        include_recipe "TEST::rollback"
      else
        Chef::Log.info("Running success...")
      end
    end
  end
end

日志文件包含以下内容:

  • “运行失败的客户端运行报告处理程序”
  • “格式化异常”

但是我没有在日志文件中找到任何提及回滚配方的内容。

上面用于调用配方的代码是否正确?

1 个答案:

答案 0 :(得分:0)

在调用处理程序时,Chef已经完成了执行。您必须创建一个自定义执行上下文才能工作。看看poise cookbook及其include_recipe的实现,看看如何做到这一点,但我强烈建议不要这样做,因为所涉及的复杂性以及最终系统的脆弱程度。