fantoche apenas exec quando o arquivo NÃO existe

11

Eu só quero executar o seguinte comando quando o arquivo (/ usr / local / bin / papply) não existir. não sei o que colocar lá.

    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
fonte

Respostas:

22

Você já tentou isso?

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

Não tenho certeza se o Puppet pode usar o '!' personagem

Talvez um melhor alternativo:

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

mesmo se eu não gostar do fato de que o comando não cria realmente o arquivo

sebastien.prudhomme
fonte
não está funcionando, recebi esta mensagem de erro. Não foi possível avaliar: não foi possível encontrar o comando '!'
precisa
E isso: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme
cria => '/ usr / local / bin / papply' funciona, obrigado. deixe-me testar suas atualizações, veja se o htat one funciona.
precisa
1
onlyif => "test! -f / usr / local / bin / papply" funciona, também é o que eu prefiro usar. obrigado.
precisa
7

Se você estiver no Linux, basta

unless => 'ls /somefile'

ls retornará com um código de retorno diferente de zero se o arquivo não existir e, a menos que apenas permita que o executor esteja sob execução se seu teste retornar um código de retorno diferente de zero.

Adam Henderson
fonte
1

No linux e no fantoche> 3.8 tente:

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

exec não será executado se /a/file.txtexistir.

Felipe Alvarez
fonte
0

Você pode considerar o uso de criações , que existem para esse fim:

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