Puppet 使用 cron 资源定义资源

Puppet 使用 cron 资源定义资源

在 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],

当然,对其他变量也执行同样的操作。

答案2

括号是你的朋友。

像这样添加数组:

cron_weekday => [2, 4],

您可以在以下位置找到更多信息cron 文档存档

相关内容