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"
    }

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


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.


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.


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'
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.