A subtle advantage of using a external nodes tool is that parameters
assigned to nodes in a an external node tool are set a top scope not
in the scope created by the node assignment in language. This leaves
you free to set default parameters for a base node assignment and
define whatever inheritance model you wish for parameters set in the
children. In the end, Puppet accepts a list of parameters for the
node and those parameters when set using an External Node tool are set
at top scope.
That being said, Doug, I don't think external nodes are really the
answer to your problem. Commonly, when modeling client server
applications you need to manage the same file resource. I generally
use class inheritance to model these situations.
I would inside of my syslog_ng module create a base class that models
the client configuration.
class syslog_ng {
....
file {'/etc/syslog-ng/syslog-ng.conf':
...
}
}
Next I would create a child class for modeling the server
configuration. Instead of managing the same file resource twice,
override the relevant parameters for the file resource in your child
class.
class syslog_ng::server inherits syslog_ng {
File['/etc/syslog-ng/syslog-ng.conf'] {
#overide parameters in here.
...
}
}
Now your node assignment that you described will work because you have
eliminated the duplicate resource definition.
http://reductivelabs.com/trac/puppet/wiki/PuppetIntroduction#inheritance
Cheers,
Teyo
--
Teyo Tyree ::
www.reductivelabs.com ::
+1.615.275.5066