puppet exec เท่านั้นเมื่อไม่มีไฟล์


11

ฉันต้องการคำสั่ง exec ต่อไปนี้เมื่อไม่มีไฟล์ (/ usr / local / bin / papply) ไม่แน่ใจว่าจะใส่อะไรดี

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

คำตอบ:


22

คุณเคยลองสิ่งนี้หรือไม่?

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

ไม่แน่ใจว่า Puppet สามารถใช้ '!' ตัวละคร

บางทีอาจจะดีกว่าชั่วชีวิต:

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

แม้ว่าฉันจะไม่ชอบความจริงที่ว่าคำสั่งไม่ได้สร้างไฟล์จริงๆ


ไม่ทำงานได้รับข้อความแสดงข้อผิดพลาดนี้ ไม่สามารถประเมินผล: ไม่พบคำสั่ง '!'
qinking126

และสิ่งนี้: onlyif => "ทดสอบ! -f / usr / local / bin / papply"
sebastien.prudhomme

สร้างงาน => '/ usr / local / bin / papply' ขอบคุณ ให้ฉันทดสอบการอัปเดตของคุณดูว่า htat ใช้ได้หรือไม่
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" ทำงานได้เช่นเดียวกับที่ฉันต้องการใช้ ขอบคุณ.
qinking126

7

หากคุณใช้งาน linux อยู่

unless => 'ls /somefile'

ls จะกลับมาพร้อมกับรหัสส่งคืนที่ไม่ใช่ศูนย์หากไฟล์นั้นไม่มีอยู่และนอกจากจะยอมให้ exec เท่านั้นที่อยู่ภายใต้การดำเนินการหากการทดสอบนั้นส่งคืนโค้ดส่งคืนที่ไม่ใช่ศูนย์



0

คุณอาจต้องการพิจารณาใช้สร้างซึ่งมีอยู่เพื่อวัตถุประสงค์นี้:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.