'defined' might be what you are after ... something like:

class foo {
}

class { "foo":
}

if defined(Class["foo"]) {
  notice("foo is defined")
} else {
  notice("foo is not defined")
}

When you comment out the class { "foo": } then the expression results
in a negative.

ken.

On Thu, Jul 7, 2011 at 5:26 PM, Keith Minkler <kmink...@gmail.com> wrote:
> In a bunch of my templates and manifests, I need to have logic which
> depends on whether or not a particular (other) puppet class is going
> to be installed on the machine.
>
> For example, for setting up the proper nagios monitors, you'd want to
> say something like "if this machine has the apache class, then
> configure apache monitoring"  It's not feasible I think to put this
> logic in the "apache" class, since you'd have to have a way to build
> up the nagios config file from parts contained in many classes which
> sometimes are installed together.
>
> Is there a function I can call, or could you provide some advice on
> how to approach writing such a function, which will tell me that the
> machine the catalog is being compiled for also has a particular class
> as part of the catalog?
>
> Currently, I'm stuck writing templates and manifests which have a lot
> of "if the hostname matches this regex, or if the fqdn matches this
> regex..."  since classes are applied by fqdn ultimately, however, this
> is growing unmanageable as we're moving to a more dynamic system of
> creating machines and assigning more arbitrary names to machines using
> an external nodes store...
>
> Without this feature, we're still stuck in many cases having to commit
> changes to the puppet repository when we make machines and can't make
> the jump to being fully automated machine creation with arbitrary host
> names.  Additionally, IMO, it makes it very difficult to understand
> many manifests and templates with all the special casing for machine
> names, instead of asking about installed classes.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to 
> puppet-users+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/puppet-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to