Wayang: Tes apakah Sumber Daya didefinisikan, atau buatlah

14

Saya sudah mencoba mencari cara untuk menguji apakah sumber daya sudah ditentukan dalam file lain, dan jika tidak membuatnya? Contoh cepat:

  if File[$local_container] {
    alert("Testing - It existed $local_container")
  } else {
    file{ "$local_container":
      ensure => directory,
    }
  }

Namun - File[$local_container]sepertinya selalu mengevaluasi untuk menjadi kenyataan. Apakah ada cara untuk melakukan ini?

gnarf
sumber

Jawaban:

10

Cara yang lebih baik untuk melakukan ini adalah dengan memanfaatkan fungsi sure_resource dari puppetlabs stdlib

Dibutuhkan jenis sumber daya, judul, dan daftar atribut yang menggambarkan sumber daya sebagai parameter.

mengatakan Anda memiliki test case untuk hanya membuat sumber daya jika belum ada-

ensure_resource('package', 'test-pkg', {'ensure' => 'present'})
Utkarsh
sumber
Ini tampak jauh lebih bersih, melewati tanda centang dengan cara ini. Terima kasih atas tipnya!
gnarf
15

Apakah maksud Anda "menguji apakah sumber daya sudah ditentukan "? Jika Anda mendefinisikan sumber daya (mis. file {}, Dll) Boneka akan membuat apa yang Anda gambarkan jika belum ada (dengan asumsi Anda lulus ensure => present, tentu saja).

Untuk memeriksa apakah sumber daya sudah ditentukan dalam katalog atau tidak:

mark-draytons-macbook:~ mark$ cat test.pp 
file { "/tmp/foo": ensure => present }

if defined(File["/tmp/foo"]) {
  alert("/tmp/foo is defined")
} else {
  alert("/tmp/foo is not defined")
}

if defined(File["/tmp/bar"]) {
  alert("/tmp/bar is defined")
} else {
  alert("/tmp/bar is not defined")
}

mark-draytons-macbook:~ mark$ puppet test.pp 
alert: Scope(Class[main]): /tmp/foo is defined
alert: Scope(Class[main]): /tmp/bar is not defined
notice: //File[/tmp/foo]/ensure: created

Catatan: defined()ini tergantung pada urutan parsing .

markdrayton
sumber
5
Bagian "tergantung pada urutan parse" membuatnya hampir tidak berguna.
joerx
2

Atau....

unless File["${local_container}"] {
  file{ "${local_container}":
     ensure => directory,
  }
}

Dan perhatikan kutipan-kutipan itu dan kurung kurawal ....

nzidol
sumber
-2

secara sederhana,

file{ "$local_container":
  ensure => directory,
  replace => false,
}
guest_002
sumber
Tidak, jika "$local_container"file sudah ditentukan di tempat lain (seperti katakan oleh sesuatu yang ingin mengontrol izin / pemilik) Anda tidak dapat menentukan sumber daya yang sama dua kali.
gnarf