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.

Odpowiedzi:


46

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

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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.