Linux

Puppet:只有在 puppet 進行了更改時才執行 exec

  • July 9, 2014

我們正在通過 puppet 對一些伺服器進行基本管理 - 伺服器本身作為集群系統的一部分執行,該系統處理使用者帳戶等其他方面,並包含一個監控腳本,用於檢測關鍵文件(/etc/passwd 等)的變化。如果 puppet 更新一個包,它可能會更改這些觸發監控系統的關鍵文件。(這不是無意的)

監控系統有一個可以手動執行的命令來清除狀態,我們必須在每次 puppet 應用任何更改時執行此操作,當我們開始收到電子郵件時!

我們可以定義一個在 post run_stage 中執行的 exec 來執行命令,但預設情況下,每次 puppet 執行時都會觸發,然後我們的報告將始終顯示為 puppet 進行了更改,無論是否進行了更改。

有沒有一種方法可以設置 exec 使其僅在 puppet 應用了其他更改時執行?

如果exec資源有一個專用階段,您可以通過讓它訂閱所有其他階段來實現所需的行為,例如

exec { "pacify-rkhunter":
   ...
   subscribe   => Stage['pre','main','aux'],
   refreshonly => true,
}

引用自:https://serverfault.com/questions/611200