John Philips wrote:
> But now I'm confused again...
>
> You say that this is possible and may even be implemented soon:
>
> package { 'foobar':
> ensure => installed,
> onlyif => 'test -f /foo/bar',
> }
>
> But something like this is pretty much out-of-the-question?
>
> $foo_exists = client_exec('test -f /foo/bar')
> if $foo_exists == 0 {
> # file exists, load the module
> include foobar
> }
>
> Both scenarios involve a decision based on output from the client.
Based on output from client, but in totally different ways. When the
client requests a configuration, it sends all known facts to the server.
The server then computes the list of resources (evaluating functions
like "include") and sends that back to the client. This is a very
efficient one-roundtrip request to the server.
Having something like your "client_exec" would require many additional
roundtrips from the server to the client. Besides the fundamental
ugliness of such an approach, in many environments server->client
connections are forbidden.
If you still, really, really, really want to implement this today, you
could create an external node classifier[1], which queries the client
and creates the proper list of classes. It still incurs the overhead and
the communications issue, but you isolate your complexity in one
well-defined place.
Regards, DavidS
[1]http://reductivelabs.com/trac/puppet/wiki/ExternalNodes
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---