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é.
Est-ce que ça marche si vous faites que ':: HandlerSendEmail :: Helper.new ....'? – coderanger