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.
Funktioniert es, wenn Sie, dass ':: HandlerSendEmail :: Helper.new ....'? – coderanger