8

Im looking for a way to test if a file exist in my client (just test not creation). I've found the way (File.exists) in chef but that wasn't simple with puppet.

Thanks in advance.

bazic
  • 113
  • 1
  • 2
  • 4

2 Answers2

9

You should create yours own function or use exec with onlyif command. something like :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
  • 1,517
  • 1
  • 17
  • 32
  • ensure => present will create the file if its not existing. bazic only wants to test and not create it. See docs: http://docs.puppetlabs.com/references/stable/type.html#file – shakalandy Apr 12 '11 at 10:29
  • Thanks,but nothing interesting in docs. – bazic Apr 12 '11 at 10:33
  • ive updated my my answer – MealstroM Apr 12 '11 at 10:36
  • 1
    @MealstroM: Wouldn't "`creates => '/etc/blabla'`" be better than an "`onlyif`"? – freiheit Apr 12 '11 at 15:08
  • @freiheit `creates =>... ` is something different. it means that `exec command` should create file in `creates => ` and if there is no this file than the command runs. and if you just want to check some /run/pid this command isnt good. and with `onlyif` you can check empty or not the file is :D – MealstroM Apr 13 '11 at 06:08
  • 1
    @MealstroM: In this particular case, `creates` would have the same result and be much simpler (and a bit faster). Yes, in general `onlyif` does provide more flexibility. – freiheit Apr 13 '11 at 17:19
6

The "native" way to do this without execs if you're on Puppet 2.6.6+:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(This functionality exists since Puppet 2.6.0, but there were a number of issues with auditing that only really got hammered out with the 2.6.6 release.)

If you're on an older version, you can also tell the resource to run in noop mode, which will just display a message when Puppet is run and the file doesn't exist:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}
jgoldschrafe
  • 4,395
  • 18
  • 18
  • yeah. this is great with new version ov puppet. ive been working with pre 2.6.0 and have to write my own ruby function for file exist/empty check. – MealstroM Apr 13 '11 at 06:11