Puppet Testing if a file exist

17,034

Solution 1

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',
}

Solution 2

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 
}
Share:
17,034
bazic
Author by

bazic

Updated on June 23, 2022

Comments

  • bazic
    bazic less than a minute

    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.

  • shakalandy
    shakalandy about 11 years
    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
  • bazic
    bazic about 11 years
    Thanks,but nothing interesting in docs.
  • MealstroM
    MealstroM about 11 years
    ive updated my my answer
  • freiheit
    freiheit about 11 years
    @MealstroM: Wouldn't "creates => '/etc/blabla'" be better than an "onlyif"?
  • MealstroM
    MealstroM about 11 years
    @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
    MealstroM about 11 years
    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.
  • freiheit
    freiheit about 11 years
    @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.