{"id":1338,"date":"2010-03-17T09:45:18","date_gmt":"2010-03-17T08:45:18","guid":{"rendered":"http:\/\/www.devco.net\/?p=1338"},"modified":"2010-08-17T12:15:07","modified_gmt":"2010-08-17T11:15:07","slug":"scheduling_puppet_with_mcollective","status":"publish","type":"post","link":"https:\/\/www.devco.net\/archives\/2010\/03\/17\/scheduling_puppet_with_mcollective.php","title":{"rendered":"Scheduling Puppet with MCollective"},"content":{"rendered":"

Scheduling Puppet runs is a hard problem, you either run the daemon or run it through cron, both have drawbacks. There’s been some discussion about decoupling this or to improve the remote control abilities of Puppet, this is my entry into that discussion.<\/p>\n

Running the daemon it’s all about the memory problems of pretty much everything involved, you also suffer if a dom0 reboots as the 20 domU’s on it will pile up and cause huge concurrency runs.<\/p>\n

Running from cron you have problems scheduling it nicely, the simplest approach is just to sleep a random period of time, but this means clients don’t always run a predictable time and you still get concurrency issues.<\/p>\n

I’ve written an mcollective<\/a> based Command and Control for Puppet that launches Puppet runs. The aim is to spread the CPU load on my masters out evenly to ensure I can use lower spec machines for masters. Or in my case I can re-use my master machines as monitoring and middleware nodes.<\/p>\n

It basically has these features:<\/p>\n