Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I only want to exec following command when file (/usr/local/bin/papply) does not exist. not sure what to put there.

    exec { 'git add url':
        command =>'git remote add origin',
        require => Exec['git init'],
        cwd => '/home/vagrant/django',
        user => 'vagrant',
        onlyif => "not sure what to put here"
share|improve this question
up vote 10 down vote accepted

Have you tried this?

onlyif => "test ! -f /usr/local/bin/papply"

Not sure if Puppet can use the '!' character

Perhaps a better alternaltive:

creates => '/usr/local/bin/papply'

even if i don't like the fact that the command doesn't really creates the file

share|improve this answer
not working, got this error message. Could not evaluate: Could not find command '!' – qinking126 Dec 4 '13 at 1:22
And this: onlyif => "test ! -f /usr/local/bin/papply" – sebastien.prudhomme Dec 4 '13 at 1:27
creates => '/usr/local/bin/papply' works, thank you. let me test your updates, see if htat one works. – qinking126 Dec 4 '13 at 1:36
onlyif => "test ! -f /usr/local/bin/papply" works, also the one I prefer to use. thank you. – qinking126 Dec 4 '13 at 2:03

If you're on linux just do

unless => 'ls /somefile'

ls will return with a non-zero return code if the file does not exist and unless will only let the exec it is under execute if its test returns a non-zero return code.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.