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?

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'})

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 .


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 ....


-2

secara sederhana,

file{ "$local_container":
  ensure => directory,
  replace => false,
}

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.