Puppet: System Administration Automated

Support

Workstation Inheritance Recipe

Use inheritance to define your workstation setup. This is how we manage a number of workstations in the office. We define classes for a bunch of useful resources, and include them into node 'workstation' like this:

node workstation {
  include syslog
  include sudoers
  include ntp
  include lan-dns
  include user-sysops
}

Vanilla workstations can just inherit this directly:

node blackbird, 
     bluetit, 
     robin 
     inherits workstation {}

Some may want additional customisations:

node sparrow, 
     chaffinch
     inherits workstation {
       service { dhcpd:
         ensure => running
       }
}

And others may not want everything provided in node workstation:

node crow {
  include lan-dns
  include user-sysops
  include cron-backup
}

This way we can change the definition of the standard workstation in one place and have everyone inherit it, but we can still customise a particular workstation if necessary. There is no default node or default configuration, because we want to be explicit about what config any new machine is going to get.