Як знайти середовище шеф-кухаря в рецепті?


30

Я хочу запустити ресурс cookbook_file, лише якщо поточне середовище "dev". Як це можна виразити?

Документація говорить про це:

У рецепті корисний такий блок коду:

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

Але я не впевнений, що цього хочу - те, що це петля, здається, неправильним.

Відповіді:


46

Подивіться в атрибут chef_environment Ruby (не звичайний атрибут Chef) на вузлі:

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

7
Зокрема, chef_environment - це метод об’єкта Chef :: Node, який повертає значення оточення вузла. Це не атрибут вузла і його не слід плутати як такого.
jtimberman

Дякую @jtimberman Я завжди думав, що середовище є атрибутом вузла, але це має сенс, що це не так.
Тім Поттер

3
Чудово, це працює. Тож відповідь на моє первісне питання - додати only_if { node.chef_environment == "dev" }. Підтверджено.
Стів Беннетт

Не вдалося отримати цю відповідь. Цей синтаксис працює для мене: if "#{node.chef_environment}" == "dev"
spuder

2

ще один елегантний спосіб:

if ['production','development'].include? node.chef_environment
    #do something here
end
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.