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.

2 Answers 2

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',
}
1
  • 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, 2011 at 6:11
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 
}
6
  • ensure => present will create the file if its not existing. bazic only wants to test and not create it. See docs: docs.puppetlabs.com/references/stable/type.html#file
    – shakalandy
    Apr 12, 2011 at 10:29
  • Thanks,but nothing interesting in docs.
    – bazic
    Apr 12, 2011 at 10:33
  • ive updated my my answer
    – MealstroM
    Apr 12, 2011 at 10:36
  • 1
    @MealstroM: Wouldn't "creates => '/etc/blabla'" be better than an "onlyif"?
    – freiheit
    Apr 12, 2011 at 15: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, 2011 at 17:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .