kukla sadece dosya mevcut değilse çalıştır


11

Yalnızca dosya (/ usr / local / bin / papply) mevcut olmadığında aşağıdaki komutu yürütmek istiyorum. oraya ne koyacağından emin değilim.

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

Yanıtlar:


22

Bunu denedin mi?

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

Kukla'ın '!' karakter

Belki daha iyi bir alternaltive:

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

komutun dosyayı gerçekten yaratmadığı gerçeğinden hoşlanmasam bile


çalışmıyor, bu hata mesajını aldım. Değerlendirilemedi: '!' Komutu bulunamadı
qinking126

Ve bu: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme

=> '/ usr / local / bin / papply' oluşturur, teşekkür ederim. güncellemelerinizi test etmeme izin verin, htat birinin çalışıp çalışmadığını görün.
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" çalışır, ayrıca kullanmayı tercih ettiğim. teşekkür ederim.
qinking126

7

Linux'taysanız sadece yapın

unless => 'ls /somefile'

ls, dosya yoksa ve sıfırdan farklı bir dönüş kodu döndürürse yalnızca exec altında çalıştırılmadığı sürece sıfır olmayan bir dönüş kodu ile döner.


1

Linux ve kukla> 3.8'de deneyin:

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

exec /a/file.txtvarsa çalışmaz .


0

Bu amaç için mevcut olan oluşturmaları kullanmayı düşünebilirsiniz :

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.