títere solo ejecutivo cuando el archivo NO existe

11

Solo quiero ejecutar el siguiente comando cuando el archivo (/ usr / local / bin / papply) no existe. No estoy seguro de qué poner allí.

    exec { 'git add url':
        command =>'git remote add origin https://github.com/testing/puppet.git',
        require => Exec['git init'],
        cwd => '/home/vagrant/django',
        user => 'vagrant',
        onlyif => "not sure what to put here"
    }
qinking126
fuente

Respuestas:

22

¿Has probado esto?

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

No estoy seguro si Puppet puede usar el '!' personaje

Quizás una mejor alternal:

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

incluso si no me gusta el hecho de que el comando realmente no crea el archivo

sebastien.prudhomme
fuente
no funciona, recibí este mensaje de error. No se pudo evaluar: no se pudo encontrar el comando '!'
qinking126
Y esto: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme
crea => '/ usr / local / bin / papply' funciona, gracias. déjame probar tus actualizaciones, ver si htat one funciona.
qinking126
1
onlyif => "test! -f / usr / local / bin / papply" funciona, también el que prefiero usar. gracias.
qinking126
7

Si estás en Linux solo hazlo

unless => 'ls /somefile'

Se devolverá con un código de retorno distinto de cero si el archivo no existe y, a menos que solo permita que el ejecutivo esté bajo ejecución si su prueba devuelve un código de retorno distinto de cero.

Adam Henderson
fuente
1

En Linux y títeres> 3.8 intente:

exec { 'test':
   command => '/bin/echo HI',
   unless  => 'test -f /a/file.txt',
}

exec no se ejecutará si /a/file.txtexiste.

Felipe Alvarez
fuente
0

Es posible que desee considerar el uso de crea , que existe para este propósito:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
Philip Kirkbride
fuente