Puppet is a configuration management system that was created with the goal of making more portions of system administration tasks reuseable. At Genius puppet is used in all of our environments: production, staging, and development. Within this setup each environment has its own puppetmaster, with each master pulling against its own version of the puppet classes. All of the masters in turn pull all of their information nodes from a central external node classifier.
The masters act as their own clients, syncing against themselves with a puppet class that controls checkouts of an svn repository holding all puppet classes. All of the servers have been configured with custom defines to handle subervision checkouts and configs for supervisor, additionally a custom parser has been written to allow pulling down webpages as part a content description. All servers run on an interval of 5 minutes with clients running on a 15 minute interval, with some special exceptions for dns servers. Additionally the web app that powers the external node classier also handles generating config files and maintaining a truth database for other tasks, like imaging.
This is the first in a series of post regarding our setup, following posts will cover our external node classifier, truth database, customer parser, custom defines.