在puppet中,我试图用cron资源创build一个定义的资源。 这是一个网站,有一个批量的工作,必须在某些日子上运行。
define website ( $sitename, $sitealias, $document_root, $cronjobs, $cron_weekday, $cron_minute, $cron_hour,
…一些其他的代码…
cron { "${title}-batchjob": user => "apache", command => "cd ${document_root}/scripts && /usr/bin/php ./batch.php &> /dev/null", minute => "${cron_minute}", hour => "${cron_hour}", weekday => "${cron_weekday}", } )
问题是,如果我想在多个日子里运行这个cron工作,比如星期二和星期四,我将不得不设置$ weekday ='2,4'。
但要做到这一点,cron资源将weekday参数定义为一个数组。
但是,如何将数组作为variables传递给已定义的资源?
如果我宣布这个细化资源如下:
website { 'mysite': sitename => 'www.mysite.com', sitealias => 'mysite', document_root => '/var/www/mysite.com', cronjobs => true, cron_hour => '2', cron_minute => '0', cron_weekday => '2,4', }
我得到一个错误,说24是不是一个有效的工作日。
看来我不得不使用一个数组cron_weekday,但我不知道如何将一个variables作为一个数组在定义的资源。
这里的问题是这样的:
weekday => "${cron_weekday}",
你基本上是把你的数组转换成一个string。
将其更改为:
weekday => $cron_weekday,
然后调用这样的parameter passing:
cron_weekday => [2, 4],
当然,对于其他variables也是这样。
括号是你的朋友。
像这样添加数组:
cron_weekday => [2, 4],
你可以在https://docs.puppet.com/puppet/latest/reference/types/cron.htmlfind更多信息。