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.