gpt4 book ai didi

random - Puppet:在同一节点上随机化多个 cronjobs

转载 作者:行者123 更新时间:2023-12-04 17:46:46 25 4
gpt4 key购买 nike

我在 Puppetized LAMP 节点上有大量 Drupal 站点。每个都有一个需要每小时运行的 cronjob,目前正在每小时运行。想要分散由此导致的峰值负载,我试图将 cronjobs 分散到随机分钟,最好不要手动配置分钟值。该值应在 Puppet 运行之间保持不变。无需考虑其他节点。

这是我的 cronjob list 中的一个示例:

# 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。我该如何解决这个问题?

最佳答案

好主意,但你需要包装 cron定义类型的资源。

define my_cron($ensure = 'present', $hour,$user) {
$minute = fqdn_rand(60, $title)
cron {
$title:
ensure => $ensure,
user => $user,
hour => $hour,
minute => $minute,
}

现在 $titlemy_cron 的实际值(以及扩展 cron )资源。

示例调用:
my_cron {
'/usr/share/bin/cleanup-job':
ensure => 'present',
hour => '2',
}

虽然 ensure甚至可以跳过 my_cron 中的默认设置.

关于random - Puppet:在同一节点上随机化多个 cronjobs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30592751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com