2017-09-29 19 views
0

J'utilise le chef solo pour tester mes recettes. J'essaie d'utiliser la bibliothèque pour déclencher un e-mail. Voici ce que j'ai fait.Erreur lors de l'exécution des bibliothèques de chefs

créé un répertoire des librairies dans mon livres de cuisine annuaire

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 

Et une recette simple

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 

Quand je lance le chef en utilisant solo chef-solo -c solo.rb -j node.json je reçois

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) 

Tout ce que je suis disparu? J'ai essayé de changer l'emplacement du répertoire des bibliothèques au même niveau que celui du répertoire des livres de cuisine, mais cela n'a pas fonctionné.

+1

Est-ce que ça marche si vous faites que ':: HandlerSendEmail :: Helper.new ....'? – coderanger

Répondre