這幾天在弄 Tomcat 的時候花了一些時間在處理 resource 的編寫,在這邊是直接使用 puppetlabs/tomcat 的 module
這個 module 用了非常多的 resource 來寫設定檔,因為要符合彈性所以直接用 create_resources 把 tomcat resource 直接拋出去當變數,然後我就遇到了在改 Tomcat 幾乎所有設定都要 refresh service 的問題 …
之前沒處理過當 create_resources 更新的時候怎麼 notify service,在官方只有簡單的範例使用。
大概腦袋卡了一小時多,在 puppet ask 找到一篇能解答「track changes create_resources PE 2015.3.2」,原來 create_resources 可以直接用 notify、require .. 這類型的相依性 function。
而且用的方式還蠻簡單的 …
service { 'tomcat8': ensure => running, } $data = {} create_resource('tomcat::config::context::resource', $data, { notify => Service["tomcat8"] })
關鍵在 $data 後面的 notify,原來可以直接使用,這樣 $data 有異動的時候就會自動 refresh tomcat8 這個 service !!
特此記錄