Pengujian Wayang jika ada file

8

Saya sedang mencari cara untuk menguji apakah ada file di klien saya (hanya tes bukan pembuatan). Saya telah menemukan cara (File.exists) dalam chef tetapi itu tidak sederhana dengan boneka.

Terima kasih sebelumnya.

bazic
sumber

Jawaban:

6

Cara "asli" untuk melakukan ini tanpa eksekutif jika Anda menggunakan Wayang 2.6.6+:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(Fungsi ini ada sejak Puppet 2.6.0, tetapi ada sejumlah masalah dengan audit yang hanya benar-benar dituntaskan dengan rilis 2.6.6.)

Jika Anda menggunakan versi yang lebih lama, Anda juga dapat memberi tahu sumber untuk menjalankan dalam noopmode, yang hanya akan menampilkan pesan ketika Puppet dijalankan dan file tidak ada:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}
jgoldschrafe
sumber
ya. ini hebat dengan versi baru boneka wayang. ive telah bekerja dengan pra 2.6.0 dan harus menulis fungsi ruby ​​saya sendiri untuk file yang ada / cek kosong.
MealstroM
9

Anda harus membuat fungsi Anda sendiri atau menggunakan exec dengan perintah onlyif. sesuatu seperti :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
sumber
pastikan => sekarang akan membuat file jika tidak ada. bazic hanya ingin menguji dan tidak membuatnya. Lihat docs: docs.puppetlabs.com/references/stable/type.html#file
shakalandy
Terima kasih, tetapi tidak ada yang menarik di dokumen.
bazic
Saya telah memperbarui jawaban saya
MealstroM
1
@MealstroM: Bukankah " creates => '/etc/blabla'" lebih baik daripada " onlyif"?
freiheit
1
@MealstroM: Dalam kasus khusus ini, createsakan memiliki hasil yang sama dan lebih sederhana (dan sedikit lebih cepat). Ya, secara umum onlyifmemang memberikan lebih banyak fleksibilitas.
freiheit