我有一個自定義puppet的事實(用ruby編寫),它執行一個簡單的bash腳本。腳本檢查文件系統中的所有文件以獲得世界可讀的權限並相應地返回結果。傀儡事實檢查腳本的輸出,如果腳本輸出不爲空,則返回「失敗」。如何安排木偶自定義事實每隔X小時執行一次?
問題是腳本是資源密集型的,我不希望它每30分鐘執行一次(客戶端'puppet.conf:runinternval = 1800)。
我試過使用「日程表」資源,但由於傀儡工作方式,它隻影響我用來評估事實的輸出的類。無論其他事情如何,木偶運行中都會對木偶事實進行評估。 (從而使它們可用於資源)
我也嘗試將執行bash腳本的代碼從事實移到puppet類中,但它看起來無法評估bash腳本的輸出(使用「 exec「類型)並將其存儲在一個變量中(再次,因爲木偶的工作方式)。
我現在正在嘗試應用某種使用Ruby語言的調度機制,並在實際中實現它。我已經閱讀了一些PStore,現在看來這是一個很好的方向。
有誰知道我可以如何使一個紅寶石腳本只在夜間執行?我不能使用crontab,因爲代碼將由puppet運行。從木偶類
代碼段:從木偶事實
if $::myfact == 'fail' {
notify { "warning blah blah...":
loglevel => err,
schedule => 'night',
}
}
代碼片段:
require 'facter'
Facter.add(:myfact) do
setcode do
if File.exists? '/usr/local/puppet/scripts/myscript.sh'
result = Facter::Util::Resolution.exec("/usr/local/puppet/scripts/myscript.sh")
if result != ''
puts "Result of myfact is: \n #{result}"
'fail'
end
end
end
末
「...使用預定作業執行評估......」這意味着我需要使用crontabs和本地緩存來使我的puppet代碼複雜化,不是嗎? – amirb
@amirb而不是使你的事實代碼複雜化,是的。是的,你應該這樣做。 –