"Correct" is such a nuanced word. I don't know whether the observed behavior is by design, but I don't find it surprising. I would not have found your expected behavior surprising either, however.You may be able to achieve your desired result like this: class { "parent": foo => "test" } class { "child": foo => "test" }
Yes, I finally reached the same conclusion. This is exactly how I fixed it.
That is, it is safe to include both a class and one of its subclasses in the same manifest. Do be aware, however, that you should create subclasses *only* to override superclass resource properties. And with parameterized classes, you can achieve an equivalent result via class parameters instead.
In this example I wasn't overriding any property but I was doing so in my "real" case, so inheritance was needed here.
If you want a class that declares all the resources of another, plus more, then have one class "include" the other instead of inheriting it. Except don't do that with parameterized classes: Puppet Labs recommends against it, and there are practical reasons to avoid doing so.
That's how I'm doing it when I don't have to override any property. IMHO It's becoming more and more difficult to know what's the correct way to do something since the introduction of the parametrized classes. They are a huge improvement though.
Cheers -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.
