logo       

Re: Template Nodes considered harmful: msg#00248

sysutils.puppet.user

Subject: Re: Template Nodes considered harmful

Hi all,

Sorry for being so quiet on this thread; I've been absorbed in
development. I'll be sending out something like a State of the Onion
mail today, but in the meantime...

On Oct 23, 2007, at 1:33 PM, David Schmitt wrote:

> The discussion has brought me to another realisation. When using a
> external
> node definition script, node inheritance can't be used at all. This
> and the
> following (shortened) IRC conversation lead me to the conclusion
> that using
> template nodes should be completely replaced by using a standard
> class in the
> PuppetBestPractise document on the wiki. Therefore I will go on and
> rewrite
> that part.

My assumption is that node inheritance is implemented in the external
node tool -- this way it can provide inheritance however it wants,
rather than Puppet enforcing a single inheritance model.

> (20:16:02) sheeri: also, if there's no multiple inheritance, why do
> I bother
> setting up nodes for things....why not just classes, since I can
> include
> multiple classes?

First, let me be clear -- I created nodes because I see nodes as
being distinct from classes, but I didn't know if they would actually
be functionally different. At this point, they're pretty much
exactly the same except for how nodes are looked up when the node
contacts the server (i.e., Puppet automatically looks up the right
node). I won't be surprised if people see no need for the node
construct, or don't use its inheritance or whatever.

There's a semantic difference between defining that a node is a
member of a class and defining that a class uses other classes. It
just so happens that there's currently no functional distinction
between them.

It's true that you can survive just fine without nodes, but I've
always known that some functional reason for their existence would
show up, and I think one has. It looks like people are expecting
node variables to inherit, which will always be difficult or even
impossible with classes.

> (20:16:21) sheeri: certainly I can see the need for something being
> both
> a "webserver" and a "dbserver".......which I'd think multiple
> inheritance
> would be the way to go

Inheritance only makes sense when you're talking about one class
needing to modify another class, which is generally not the case.

--
Morgan's Second Law:
To a first approximation all appointments are canceled.
---------------------------------------------------------------------
Luke Kanies | http://reductivelabs.com | http://madstop.com


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise