Puppet

使用 cron 資源的 Puppet 定義資源

  • December 22, 2021

在 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 使用一個數組,但我不知道如何在定義的資源中將變數作為數組傳遞。

這裡的問題是:

weekday => "${cron_weekday}",

您基本上是將數組轉換為字元串。

將其更改為:

weekday => $cron_weekday,

然後像這樣呼叫傳遞參數:

cron_weekday => [2, 4],

當然也對其他變數做同樣的事情。

括號是你的朋友。

像這樣添加數組:

cron_weekday => [2, 4],

您可以在cron 文件存檔中找到更多資訊。

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