con rối chỉ thực hiện khi tập tin KHÔNG tồn tại


11

Tôi chỉ muốn thực thi lệnh sau khi tệp (/ usr / local / bin / papply) không tồn tại. không chắc chắn những gì để đặt ở đó.

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

Câu trả lời:


22

Bạn đã thử điều này?

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

Không chắc chắn nếu Puppet có thể sử dụng '!' tính cách

Có lẽ tốt hơn vĩnh cửu:

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

ngay cả khi tôi không thích thực tế là lệnh không thực sự tạo ra tệp


không hoạt động, nhận được thông báo lỗi này. Không thể đánh giá: Không thể tìm thấy lệnh '!'
qinking126

Và đây: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme

tạo => '/ usr / local / bin / papply' hoạt động, cảm ơn bạn. Hãy để tôi kiểm tra cập nhật của bạn, xem htat one hoạt động.
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" hoạt động, cũng là công cụ tôi thích sử dụng. cảm ơn bạn.
qinking126

7

Nếu bạn đang dùng linux, hãy làm

unless => 'ls /somefile'

ls sẽ trả về với mã trả về khác không nếu tệp không tồn tại và trừ khi sẽ chỉ cho phép thực thi nó được thực thi nếu kiểm tra của nó trả về mã trả về khác không.


1

Trên linux và con rối> 3,8 hãy thử:

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

exec sẽ không chạy nếu /a/file.txttồn tại.


0

Bạn có thể muốn xem xét việc sử dụng tạo , tồn tại cho mục đích này:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.