簡體   English   中英

如何為廚師處理程序安裝依賴項?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM