В марионетке я пытаюсь создать определенный ресурс с ресурсом 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 определяет параметр дня недели как массив.
Но как передать массив в качестве переменной определенному ресурсу?
Если я объявлю этот доработанный ресурс следующим образом:
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, но я не знаю, как передать переменную как массив в определенном ресурсе.
Проблема вот в чем:
weekday => "${cron_weekday}",
Вы в основном конвертируете свой массив в строку.
Измените его на:
weekday => $cron_weekday,
И затем вызовите параметр, подобный этому:
cron_weekday => [2, 4],
И, конечно же, сделайте то же самое и для других переменных.
Скобки - ваш друг.
Добавьте такой массив:
cron_weekday => [2, 4],
Вы можете найти более подробную информацию на https://docs.puppet.com/puppet/latest/reference/types/cron.html