[英]How do I install dependencies for a chef handler?
我正在嘗試通過chef_handler lwrp安裝一個廚師處理程序。 這個處理程序(chef-handler-email)捆綁在一個gem中。 我正在嘗試安裝gem然后在單個配方中打開處理程序,如下所示:
chef_gem "chef-handler-mail"
chef_handler "MailHandler" do
source 'chef/handler/mail'
arguments :to_address => "root"
action :nothing
supports :exception => true, :report => false
end.run_action(:enable)
如果已經安裝了gem,這可以正常工作。 但是,如果尚未安裝Gem,則會收到此錯誤:
[2012-12-09T20:47:56-05:00] FATAL: LoadError: chef_handler[MailHandler] (chef_handler::email line 13) had an error: LoadError: no such file to load -- chef/handler/mail.rb
似乎chef_handler資源在chef_gem執行並為處理程序安裝gem之前嘗試加載處理程序。 我顯然可以在一個兩步手動過程中執行此操作,其中我有一個單獨的配方來安裝gem,然后翻轉到配置處理程序的另一個配方,但我希望避免多步手動過程。 可以通過單一食譜完成嗎?
我有一個類似的廚師minitest-chef-handler食譜:
chef_gem 'minitest'
chef_gem 'minitest-chef-handler'
require 'rubygems'
require 'minitest-chef-handler'
[... some unrelated code ...]
chef_handler "MiniTest::Chef::Handler" do
source "minitest-chef-handler"
arguments :verbose => true
action :nothing
end.run_action( :enable )
在創建chef_handler資源之前嘗試使用您的gem,或者可能源不同......
#run_action
調用導致chef_handler
資源在“編譯”階段立即運行,而chef_gem
資源在“執行”階段正常運行。
因此,需要在編譯階段安裝gem。 並且似乎還需要一個require
語句(如另一個答案所示),以便Chef加載gem。
chef_gem 'chef-handler-mail' do
action :nothing
end.run_action(:install)
require 'chef/handler/mail'
chef_handler 'MailHandler' do
source 'chef/handler/mail'
# ... other attributes
action :nothing
end.run_action(:enable)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.