On Sat, Dec 18, 2010 at 11:46:50AM -0800, Ken Barber wrote: > Can you elaborate? > > On Saturday, December 18, 2010 7:23:57 PM UTC, kc7zzv wrote: > > > > > > On Dec 18, 2010, at 3:50 AM, Ken Barber wrote: > > > > > For the record, an alternative that I don't believe was mentioned is to > > do something like: > > > > > > if !defined(Package["foo"]) { > > > package {"foo": ensure => installed } > > > } > > > > In general this is a bad idea though. Mostly because it can surprise you > > in bad ways. > > > >
Its an ordering issue. Example node default { include foo if defined(Exec['uname']) { include bar } } class foo { exec { 'uname': command => '/usr/bin/uname' } notice("Class[foo] applied for defaultnode") } class bar { notice("Class[bar] applied for defaultnode") } This works but if you include foo after the ifstatement then bar will not be included. If you have a complex dependency chain the right order may not be as obvious as in this example (at least I dont know in which order puppet parses complex and nested class structures [and in my opinion I should not have to know it]) -Stefan
pgpKjJX0SnTv9.pgp
Description: PGP signature