在 puppet 中,我尝试创建一个包含 cron 资源的定义资源。它适用于具有必须在特定日期运行的批处理作业的网站。
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 参数定义为一个数组。
但是如何将数组作为变量传递给定义的资源?
如果我按如下方式声明这个精炼资源:
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 使用一个数组,但我不知道如何在定义的资源中将变量作为数组传递。
答案1
这里的问题是这样的:
weekday => "${cron_weekday}",
您基本上是将数组转换为字符串。
将其更改为:
weekday => $cron_weekday,
然后调用传递参数如下:
cron_weekday => [2, 4],
当然,对其他变量也执行同样的操作。