Forge Home


Configure and distribute Puppet run frequency using Cron (Posix) and Scheduled Tasks (Windows)


3,745 latest version

4.6 quality score

We run a couple of automated
scans to help you access a
module's quality. Each module is
given a score based on how well
the author has formatted their
code and documentation and
modules are also checked for
malware using VirusTotal.

Please note, the information below
is for guidance only and neither of
these methods should be considered
an endorsement by Puppet.

Version information

  • 1.0.2 (latest)
  • 1.0.1
  • 1.0.0
  • 0.4.2
  • 0.4.1
  • 0.4.0
  • 0.3.2
  • 0.3.0
  • 0.2.2
  • 0.2.1
  • 0.2.0
  • 0.1.1
  • 0.1.0
released Jul 6th 2021
This version is compatible with:
  • Puppet Enterprise 2023.2.x, 2023.1.x, 2023.0.x, 2021.7.x, 2021.6.x, 2021.5.x, 2021.4.x, 2021.3.x, 2021.2.x, 2021.1.x, 2021.0.x, 2019.8.x, 2019.7.x, 2019.5.x, 2019.4.x, 2019.3.x, 2019.2.x, 2019.1.x
  • Puppet >= 6.1.0 < 8.0.0
  • , , , , , , , , ,

Start using this module

  • r10k or Code Manager
  • Bolt
  • Manual installation
  • Direct download

Add this module to your Puppetfile:

mod 'reidmv-puppet_run_scheduler', '1.0.2'
Learn more about managing modules with a Puppetfile

Add this module to your Bolt project:

bolt module add reidmv-puppet_run_scheduler
Learn more about using this module with an existing project

Manually install this module globally with Puppet module tool:

puppet module install reidmv-puppet_run_scheduler --version 1.0.2

Direct download is not typically how you would use a Puppet module to manage your infrastructure, but you may want to download the module in order to inspect the code.



reidmv/puppet_run_scheduler — version 1.0.2 Jul 6th 2021


Build Status

Configure and distribute Puppet run frequency using Cron (Posix) and Scheduled Tasks (Windows).


By default, Puppet runs once every 30 minutes on client systems, with a service and timer controlling the frequency of runs. For massive installations of Puppet the imprecise timing results in "waves" of load being seen on the Puppet servers, as tens of thousands of systems rarely distribute themselves perfectly throughout the run interval.

The puppet_run_scheduler module replaces the running service method of scheduling and replaces it with precise distribution of load using system schedulers, Cron (Posix) and Scheduled Tasks (Windows). This eliminates "waves" of load in massive installations, perfectly distributing activity through the run interval period.


What puppet_run_scheduler affects

The puppet service will be disabled when puppet_run_scheduler is implemented on all platforms.

On Windows, puppet_run_scheduler will install a Scheduled Task called "puppet-run-scheduler".

On Linux/Unix, puppet_run_scheduler will install a puppet-run-scheduler cron job under the root user.

Basic Usage

Using a default 30m run interval, you can simply include the class.

include puppet_run_scheduler

Parameters exist that can be used to fine-tune exactly how the runs are scheduled.

class { 'puppet_run_scheduler':
  run_interval => '4h',
  splaylimit   => '1h',
  start_time   => '16:00',


This module is documented via pdk bundle exec puppet strings generate --format markdown. Please see for more info.

Known Issues


On Windows, when running from a Scheduled Task, Puppet creates cache files that are not readable by "Everyone", only SYSTEM. This has the effect of making manual puppet agent -t runs return a lot of red text in the shell. The last line of red text even suggests that Puppet was unable to submit a report. This isn't true though; Puppet DOES submit a report.

A workaround exists in the module to avoid this by explicitly ensuring minimal ACEs exist on those files.