Email

如何使用 Puppet 在 cron 中設置 MAILTO?

  • December 18, 2018

期望是會有一個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 類型cron有一個名為的屬性environment,可用於為託管 cronjob 設置環境變數。

在這種情況下,它看起來像這樣,將MAILTO變數設置為,foobar以便將 cronjob 的輸出郵寄給使用者foobar

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

您可以使用 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 環境變數。

引用自:https://serverfault.com/questions/778834