我在一个使用 Puppet 部署的 LAMP 节点上拥有大量的 Drupal 网站。每个网站都有一个需要每小时运行的 cronjob,目前是在整点运行。为了避免这造成的峰值负载,我想将 cronjob 分散到随机的分钟数,最好不需要手动配置分钟值。该值应在 Puppet 运行之间保持不变。无需考虑其他节点。
下面是我的 cronjob 清单示例:
我尝试了 Puppet 的 fqdn_rand() 函数,但这只会在不同节点(由于使用 fqdn)之间进行随机化,导致相同的值出现在同一节点上的每个 cronjob 上。
我猜测 $title 实际上没有被解析,而是作为字符串 '$title' 传递给了函数。无论如何,这不是我所需要的。
在运行 Puppet 3.7.5 的情况下,我没有找到其他可以帮助我的函数。我该怎么解决这个问题?
下面是我的 cronjob 清单示例:
# Drupal cronjobs
cron { "www1.example.com":
command => "nice -n 19 drush -y -r /var/www/sites/example.com/www1/current/public -l www1.example.com elysia-cron",
user => 'www-data',
hour => '*',
minute => '0',
}
cron { "www2.example.com":
command => "nice -n 19 drush -y -r /var/www/sites/example.com/www2/current/public -l www2.example.com elysia-cron",
user => 'www-data',
hour => '*',
minute => '0',
}
cron { "www3.example.com":
command => "nice -n 19 drush -y -r /var/www/sites/example.com/www3/current/public -l www3.example.com elysia-cron",
user => 'www-data',
hour => '*',
minute => '0',
}
我尝试了 Puppet 的 fqdn_rand() 函数,但这只会在不同节点(由于使用 fqdn)之间进行随机化,导致相同的值出现在同一节点上的每个 cronjob 上。
minute => fqdn_rand(60), # Same value for each cronjob :(
我曾尝试使用cronjob名称来为fqdn_rand()函数提供种子,但使用资源名称作为种子并没有奏效:
minute => fqdn_rand(60, $title), # Same value for each cronjob :(
minute => fqdn_rand(60, "${title}"), # Same value for each cronjob :(
我猜测 $title 实际上没有被解析,而是作为字符串 '$title' 传递给了函数。无论如何,这不是我所需要的。
在运行 Puppet 3.7.5 的情况下,我没有找到其他可以帮助我的函数。我该怎么解决这个问题?