2016-07-25 40 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