Назад | Перейти на главную страницу

Ресурс, определенный марионеткой с ресурсом cron

В марионетке я пытаюсь создать определенный ресурс с ресурсом 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