Linux – puppet exclude module

centoslinuxpuppet

i have created a base class for all the servers in puppet,

class centos_base {
        include chkconfig
        include hosts
        include inittab
        include nscd
        include nsswitch
        include ntp
        include puppet
        include syslog::base
        include ssh
#        include curp
        include security
        include sysctl
        include sudo
        include users
        include vim
        include yum
        include rpmforge
#       include vmware-tools

        import 'resolver'

        resolv_conf { default_resolver:
                domainname  => "domain.com",
                searchpath  => ['domain.com'],
                nameservers => ['x.x.x.y', 'x.x.y.y' ],
  }

        import 'nrpe'

        nrpe_conf { nrpe:
                                listen_address => $ipaddress,
                                nagios_address => 'xx.xx.xx.yy',
        }
}

and on nodes.pp, i include this class for all servers, for one of the server,i want to include this class but exclude syslog::base.

any idea how this can be done..

Best Answer

Try this:

class centos_base {
    define includer($exclude=false) {
        if !$exclude {
            include $name
        }
    }

    includer{ ["chkconfig", "hosts", ...: }

    class no_syslog_base inherits centos_base {
        Includer["syslog::base"] { exclude => true }
    }
    ...
}

For server you want to exclude syslog::base:

node 'special' {
    include centos_base::no_syslog_base
}

and for all other servers:

node 'normal' {
    include centos_base
}
Related Topic