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

Как установить MAILTO в cron с помощью Puppet?

Ожидалось, что будет mailto атрибут, но этот источник отрицает это

cron { 'resource title':
  name        => # (namevar) The symbolic name of the cron job.  This name is 
  ensure      => # The basic property that the resource should be...
  command     => # The command to execute in the cron job.  The...
  environment => # Any environment settings associated with this...
  hour        => # The hour at which to run the cron job. Optional; 
  minute      => # The minute at which to run the cron job...
  month       => # The month of the year.  Optional; if specified...
  monthday    => # The day of the month on which to run the...
  provider    => # The specific backend to use for this `cron...
  special     => # A special value such as 'reboot' or 'annually'...
  target      => # The name of the crontab file in which the cron...
  user        => # The user who owns the cron job.  This user must...
  weekday     => # The weekday on which to run the command...
  # ...plus any applicable metaparameters.
}

В документации не указано, поддерживается ли mailto, например:

Окружающая среда

(Свойство: этот атрибут представляет конкретное состояние целевой системы.)

Любые настройки среды, связанные с этим заданием cron. Они будут храниться между заголовком и заданием в crontab. Не может быть никаких гарантий, что другие, более ранние настройки также не повлияют на данное задание cron.

Кроме того, Puppet не может автоматически определить, связана ли существующая неуправляемая среда с заданным заданием cron. Если у вас уже есть задания cron с настройками среды, Puppet сохранит эти настройки в том же месте в файле, но не будет связывать их с конкретным заданием.

Настройки должны быть указаны точно так, как они должны отображаться в crontab, например, PATH = / bin: / usr / bin: / usr / sbin.

Вы можете использовать модуль из puppet forge для управления cron и добавления переменных среды в задание cron. Я использовал вот этот, может быть другие.

Ты можешь сделать это

cron::job {
  'mysqlbackup':
    minute      => '40',
    hour        => '2',
    date        => '*',
    month       => '*',
    weekday     => '*',
    user        => 'root',
    command     => 'mysqldump -u root mydb',
    environment => [ 'MAILTO=root', 'PATH="/usr/bin:/bin"' ];
}

Который, помимо прочего, устанавливает переменные среды MAILTO и PATH.

Встроенный кукольный тип cron как указано в вопросе, имеет свойство с именем environment которые можно использовать для установки переменных среды для управляемого задания cron.

В этом случае это будет выглядеть так, установив MAILTO переменная для foobar так что вывод cronjob будет отправлен пользователю foobar:

cron { 'some-cron-job':
  ...
  environment => 'MAILTO=foobar',
}

cron отправляет вывод пользователю, выполняющему задание. Если вы хотите перенаправить почту, есть несколько вариантов.

  • Обработайте вывод и рассылку в сценарии, выполняющем задание.
  • Используйте запись в файле псевдонимов электронной почты для перенаправления вывода. Это перенаправит всю почту пользователя.
  • Использовать procmailили другая программа для перенаправления сообщения при его доставке в почтовый ящик пользователя.