Jak znaleźć środowisko szefa kuchni w przepisie?

30

Chcę uruchomić zasób plik_booka tylko wtedy, gdy bieżącym środowiskiem jest „dev”. Jak można to wyrazić?

Dokumentacja sugeruje to:

W przepisie przydatny byłby taki blok kodu:

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

Ale nie jestem pewien, czy tego właśnie chcę - fakt, że jest to pętla, wydaje się niewłaściwy.

Steve Bennett
źródło

Odpowiedzi:

46

Zajrzyj do atrybutu chef_environment Ruby (nie zwykłego atrybutu Chef) w węźle:

if node.chef_environment == "dev"
  # stuff
end
Tim Potter
źródło
7
W szczególności chef_environment jest metodą na obiekcie Chef :: Node, która zwraca wartość środowiska węzła. Nie jest to atrybut węzła i nie należy go mylić jako taki.
jtimberman
Dzięki @jtimberman. Zawsze myślałem, że środowisko jest atrybutem węzła, ale ma sens, że tak nie jest.
Tim Potter,
3
Świetnie, to działa. Tak więc odpowiedzią na moje pierwotne pytanie jest dodanie only_if { node.chef_environment == "dev" }. Zatwardziały.
Steve Bennett,
Nie udało się uzyskać tej odpowiedzi do działania. Ta składnia działa dla mnie: if "#{node.chef_environment}" == "dev"
spuder
2

inny elegancki sposób:

if ['production','development'].include? node.chef_environment
    #do something here
end
Ilja
źródło