2016-07-25 22 views
0

目前我需要根據安裝clamac的配方的主機名安裝交錯cron。我有一個很好的例子,但運行良好,但是我的最終產品需要處理幾百個不同的主機名,主要是升序號。服務器示例:myserver-db [1-12],anotherserver-acc [1-9]。基於node.name的Chef-solo創建cron

cron 'clam-scan-weekly Staggered 1' do 
     only_if {node.name == 'myserver-db1' || 'myserver-db3' } 
     minute 30 
     hour 22 
     weekday 1 
     command '/usr/bin/clamscan --exclude-dir="/dev/|/proc/|/run/|/sys/" -l clamscan.log -r /' 
     user 'root' 
end 

cron 'clam-scan-weekly Staggered 2' do 
     only_if {node.name == 'myserver-db2' || 'myserver-db4' } 
     minute 30 
     hour 22 
     weekday 1 
     command '/usr/bin/clamscan --exclude-dir="/dev/|/proc/|/run/|/sys/" -l clamscan.log -r /' 
     user 'root' 
end 

最終目標是根據主機名創建四個交錯cron作業中的三個。我看着ruby_blocks,它可能是可行的,但也許有一個更簡單的方法。我希望globbing會工作,但它不...謝謝你的幫助!

+0

你想錯開分鐘或執行的時間嗎?他們應該多久運行一次? –

回答

0

所以潛在的問題是x == 'a' || 'b'是你寫的,但x == 'a' || x == 'b'是你的意思,這是非常不同的。

爲了解決這個問題,而不復制粘貼不過的bajillion行:

cron 'whatever' do 
    # Other properties here. 
    minute node.name.hash % 60 
end