###################################### # define some classes class apache { apache_setup { "config" : } } define apache_setup ( $chroot = true, $ssl = false ) { # sanity checking, platform-specific defaults $_chroot = $chroot $_ssl = $ssl class apache_config { $ssl = $_ssl $chroot = $_chroot # more variables here } include apache_config # actuall apache setup goes here } class trac { case $apache_config::chroot { true: { notice("chroot = true") # do something } default: { # do something else notice("chroot = ${apache_config::chroot}") } } } ###################################### # Now use what we've set up class apache_ssl inherits apache { # override the defaults Apache_setup["config"] { ssl => true, chroot => false } } include apache_ssl include trac