Configuration-Management
cfengine3 輸出目錄
我已經開始執行 cfengine3,使用 cf-execd 以預設的每 5 分鐘間隔安排執行 cf-agent。
cf-execd 擷取 cf-agent 的輸出(使用 –inform 選項執行),將輸出儲存在 $WORKDIR/outputs 目錄中,並將結果通過電子郵件發送(但前提是它與上次執行不同)。就像你想像的那樣,每 5 分鐘輸出一個文件,這個目錄會很快被大量文件填滿,預計使用者會清理這個目錄。
我創建了一個規則,將刪除這些超過 3 天的輸出文件,但是這產生的問題是每個輸出都與前一個不同(因為每次都會刪除一個新文件),因此將發送一封電子郵件發送。因此,我從輸出目錄中的大量文件轉到收件箱中的大量電子郵件!
我真正想要的是在修復某些承諾時抑制消息,特別是刪除輸出目錄中文件的承諾。它基本上只會否定該承諾的 -I 選項。或者,如果我可以將時間邊界從“現在”更改為固定點(比如每週三),我至少可以將電子郵件數量限制為每週一封。
看起來你從來沒有得到你的問題的答案,所以我現在本著“遲到總比沒有好”的精神發布這個。
你問:
我真正想要的是在修復某些承諾時抑制消息,特別是刪除輸出目錄中文件的承諾。它基本上只會否定該承諾的 -I 選項。
據我所知,不可能為單個承諾否定 –inform 開關。
或者,如果我可以將時間邊界從“現在”更改為固定點(比如每週三),我至少可以將電子郵件數量限制為每週一封。
這可以使用“ifelapsed”參數來實現——這給出了執行承諾的最小頻率。考慮這個例子:
bundle agent garbage_collection { files: "$(sys.workdir)/outputs" delete => tidy, file_select => days_old("3"), depth_search => recurse("inf"), action => weekly; } body action weekly { ifelapsed => 10080; # one week, ie (60*24*7) minutes }
或者你可以在星期三執行這個承諾,使用特殊課程。我更喜歡這種
ifelapsed
方法,它不依賴於工作日(你永遠不知道該主機是否可能不會在某個星期三執行……),如下所示:bundle agent garbage_collection { files: Wednesday:: "$(sys.workdir)/outputs" delete => tidy, file_select => days_old("3"), depth_search => recurse("inf"); }