Bagaimana menemukan lingkungan Chef dalam resep?


30

Saya ingin menjalankan sumber daya cookbook_file hanya jika lingkungan saat ini adalah "dev". Bagaimana ini bisa diungkapkan?

Dokumentasi menyarankan ini:

Dalam resep, blok kode seperti ini akan berguna:

qa_nodes = search(:node,"chef_environment:QA")      
qa_nodes.each do |qa_node|                          
    # Do useful specific to qa nodes only
end

Tapi saya tidak yakin itu yang saya inginkan - fakta bahwa perulangan itu keliru.

Jawaban:


46

Lihat di atribut Ruby chef_environment (bukan atribut Chef biasa) pada node:

if node.chef_environment == "dev"
  # stuff
end

7
Secara khusus, chef_environment adalah metode pada objek Chef :: Node yang mengembalikan nilai lingkungan node. Ini bukan atribut simpul dan tidak boleh bingung seperti itu.
jtimberman

Terima kasih @jtimberman. Saya selalu berpikir bahwa lingkungan adalah atribut dari sebuah node tetapi masuk akal bahwa itu bukan.
Tim Potter

3
Bagus, ini berhasil. Jadi jawaban untuk pertanyaan awal saya adalah menambahkan only_if { node.chef_environment == "dev" }. Dikonfirmasi
Steve Bennett

Tidak dapat jawaban ini berfungsi. Sintaks ini bekerja untuk saya: if "#{node.chef_environment}" == "dev"
spuder

2

cara elegan lain:

if ['production','development'].include? node.chef_environment
    #do something here
end
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.