Bir tarifte Chef ortamını nasıl bulabilirim?


30

Bir yemek kitabı_dosyası kaynağını sadece mevcut ortam "dev" ise çalıştırmak istiyorum. Bu nasıl ifade edilebilir?

Belgeler şunu öneriyor:

Bir tarifte, bunun gibi bir kod bloğu faydalı olacaktır:

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

Ama istediğim şeyin bu olduğundan emin değilim - bunun bir döngü olması yanlış görünüyor.

Yanıtlar:


46

Düğümdeki chef_environment Ruby özelliğine (normal bir Chef özelliği değil) bakın:

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

7
Özellikle, chef_environment, düğümün ortamının değerini döndüren Chef :: Node nesnesindeki bir yöntemdir. Bir düğüm niteliği değildir ve bu şekilde karıştırılmamalıdır.
jtimberman

Teşekkürler @jtimberman. Her zaman bir çevreyi bir düğümün niteliği olarak düşünmüştüm, ama olmadığı anlamına geliyor.
Tim Potter

3
Harika, bu işe yarıyor. Yani asıl sorumun cevabı eklemek only_if { node.chef_environment == "dev" }. Onaylandı.
Steve Bennett,

Bu cevabı işe alamadım. Bu sözdizimi benim için işe yarıyor:if "#{node.chef_environment}" == "dev"
spuder

2

başka bir şık yol:

if ['production','development'].include? node.chef_environment
    #do something here
end
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.