Шеф-повар просто игнорирует блок возврата - PullRequest
0 голосов
/ 21 мая 2018

Предупреждение шеф-повара !!!!!Я не делал установки или настройки для Ohai.При нулевом запуске шеф говорит, что путь к плагину / etc / chef / ohai / plugins не существует, но также говорит:

"- повторно запустите ohai и объедините результаты в атрибуты узла" .. Так что я думаю, что это работает

Но Шеф просто игнорирует блок if.Chef даже не упоминает об этом, когда я запускаю chef zero с включенным уровнем «info».

Я тоже попробовал другой вариант

return if node['packages'].keys.include?('ffmpeg')

Но те же результаты.Почему шеф-повар такой странный?Или это так, потому что я не потрудился изучать рубин?Почему все ресурсы Chef предполагают, что все знают все основы.

1 Ответ

0 голосов
/ 21 мая 2018

Вам следует ознакомиться с Обзором клиента Chef .В частности, порядок Сбросить атрибуты узла phase, Скомпилировать коллекцию ресурсов phase и Converge the node phase.

Ohai информация перезагружаетсякаждый раз, когда ресурсы компилируются, на этапе сброса.Если цель состоит в том, чтобы перезагрузить Ohai для вашего заявления if, то ресурс Ohai, который у вас есть, здесь не нужен.Этот ресурс Ohai будет работать во время фазы конвергенции.Блок if запускается до того ресурса Ohai, на этапе компиляции.Это также означает, что оператор if будет возвращаться во время фазы компиляции, а не во время запуска клиента chef.

Как правило;ресурсы работают во время конвергенции, но любой код ruby, которого нет в ресурсе ruby_block, выполняется во время компиляции.Это означает, что любой оператор if завершается во время компиляции с состоянием узла до запуска текущего клиента.

Надеюсь, это поможет устранить некоторую путаницу.

...