check if if file exists on client an master

1,278 views
Skip to first unread message

Romain Gales

unread,
Nov 28, 2012, 7:56:48 PM11/28/12
to puppet...@googlegroups.com
Hi pupper community,

I am working with puppet on Windows and have an issue.
I want to check what version of a package is installed.
My idea was to add a file in the package package28112012.txt and while running the manifest check if that package28112012.txt exists on the agent?
Can I define a variable reading this filename on the master?

Regards and thanks in advance,

Romain

Eduardo A Muñoz

unread,
Nov 28, 2012, 8:09:40 PM11/28/12
to puppet...@googlegroups.com
I think you would want to create a fact that publish that state to the master.



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



Romain Gales

unread,
Nov 28, 2012, 8:46:04 PM11/28/12
to puppet...@googlegroups.com
there is what i tried:

# getpfoleproxyver.rb
#
Facter.add(:getpfoleproxyver) do
  setcode do
      Facter::Util::Resolution.exec('basename `ls /softw4pc/Misc/pfoleproxy/pfoleproxy*.txt`')
  end
end

the fact is working fine, but how to use this in my manifest?
i tried a lot but it was always empty?

$getpfoleproxyver should be correct, no?

Jakov Sosic

unread,
Dec 13, 2012, 12:29:23 AM12/13/12
to puppet...@googlegroups.com
On 11/28/2012 09:46 PM, Romain Gales wrote:
> there is what i tried:
>
> # getpfoleproxyver.rb
> #
> Facter.add(:getpfoleproxyver) do
> setcode do
> Facter::Util::Resolution.exec('basename `ls
> /softw4pc/Misc/pfoleproxy/pfoleproxy*.txt`')
> end
> end
>
> the fact is working fine, but how to use this in my manifest?
> i tried a lot but it was always empty?
>
> $getpfoleproxyver should be correct, no?

Are you sure it's working on the client? You can see the value when you
type facter -p | grep getpfoleproxyver

?

Romain Gales

unread,
Dec 13, 2012, 6:46:07 AM12/13/12
to puppet...@googlegroups.com
The facter should be executed on the server instead on the client.

Luke Bigum

unread,
Dec 13, 2012, 10:26:20 AM12/13/12
to puppet...@googlegroups.com
Romain, I am confused.

In your first post you said you need to check if a package exists on the "Agent", the Puppet client.

Now below you say you need the check executed on the Master.

Facts are executed on the Agents and only ever on Agents. If you want to check for something on a client/agent machine, you use a Fact, like the one you posted below.

If you want to execute arbitrary code on the Master (during catalogue compilation) probably the simplest thing you are after is the Generate function:


On linux, I would use something that looks a bit like this:

class woof {
  $file_exists = generate('/bin/test', '-f', '/softw4pc/Misc/pfoleproxy/pfoleproxy*.txt')
  if $file_exists {
  ...
  }
}

There are other ways you can execute arbitrary code, like embedded Ruby with the inline_template() function, pure Ruby manifests, or bury the code somehow in a custom type and provider.

Does that help?

-Luke

Romain Gales

unread,
Dec 13, 2012, 3:51:20 PM12/13/12
to puppet...@googlegroups.com
Hi,

I malformed my question.
This is a hint in the right direction.


Romain
Reply all
Reply to author
Forward
0 new messages