It may be a bit primitive, but I've been using crontab to "manually" run the puppet agent.
I use the fqdn_rand() function to pick a number between 1-30, then set a crontab with that minute, and that minute+30, as the times to run. Does a nice job of distributing the agent load across my enterprise.
$r1 = fqdn_rand(30)
$r2 = $r1 + 30
cron { 'puppet-agent':
ensure => present,
user => root,
minute => [$r1, $r2],
environment => 'MAILTO=""',
command => "/usr/bin/puppet agent --test --environment $puppetEnvironment",
}