2017-09-29 9 views
0

Ich benutze Chef-Solo, um meine Rezepte zu testen. Ich versuche mit der Bibliothek eine E-Mail auszulösen. Hier ist was ich getan habe.Fehler beim Ausführen von Chefbibliotheken

ein Bibliotheken-Verzeichnis in meinem Kochbücher Verzeichnis

cat /tmp/chefrepo/cookbooks/poc/libraries/helper.rb 
require 'net/smtp' 

module HandlerSendEmail 
    class Helper 

    def send_email_on_run_failure(node_name) 

     message = "From: Chef <[email protected]>\n" 
     message << "To: Grant <[email protected]>\n" 
     message << "Subject: Chef run failed\n" 
     message << "Date: #{Time.now.rfc2822}\n\n" 
     message << "Chef run failed on #{node_name}\n" 
     Net::SMTP.start('localhost', 25) do |smtp| 
     smtp.send_message message, '[email protected]', '[email protected]' 
     end 
    end 
    end 
end 

Und ein einfaches Rezept

cat /tmp/chefrepo/cookbooks/poc/recipes/default.rb 
# 
# Cookbook:: poc 
# Recipe:: default 
# 
# Copyright:: 2017, The Authors, All Rights Reserved. 
ruby_block 'fail the run' do 
    block do 
    fail 'deliberately fail the run' 
    end 
end 

Chef.event_handler do 
    on :run_failed do 
    HandlerSendEmail::Helper.new.send_email_on_run_failure(
     Chef.run_context.node.name 
    ) 
    end 
end 

Wenn ich laufen Erstellt Solo Köchin mit chef-solo -c solo.rb -j node.json I

Running handlers: 
[2017-09-29T12:49:09+00:00] ERROR: Running exception handlers 
[2017-09-29T12:49:09+00:00] ERROR: Running exception handlers 
Running handlers complete 
[2017-09-29T12:49:09+00:00] ERROR: Exception handlers complete 
[2017-09-29T12:49:09+00:00] ERROR: Exception handlers complete 
Chef Client failed. 0 resources updated in 03 seconds 
[2017-09-29T12:49:09+00:00] ERROR: uninitialized constant #<Class:#<Chef::Recipe:0x0000000004875ee8>>::HandlerSendEmail 
[2017-09-29T12:49:09+00:00] ERROR: uninitialized constant #<Class:#<Chef::Recipe:0x0000000004875ee8>>::HandlerSendEmail 
[2017-09-29T12:49:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 
[2017-09-29T12:49:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) 

Alles, was bekomme ich bin fehlt? Ich habe versucht, den Speicherort des Bibliotheksverzeichnisses auf der gleichen Ebene wie das Verzeichnis der Kochbücher zu ändern, aber es hat nicht funktioniert.

+1

Funktioniert es, wenn Sie, dass ':: HandlerSendEmail :: Helper.new ....'? – coderanger

Antwort