Назад | Перейти на главную страницу

Название текущего рецепта

В Chef можно ли получить название рецепта, когда этот рецепт запущен?

Я хочу добавить название рецепта при регистрации / отладке. Что-то вроде:

Шеф-повар: Log.info "# {recipe_name} xxxx"

Вы действительно можете получить название рецепта именно так, как вы предложили в вопросе!

Chef::Log.info("I am a message from the #{recipe_name} recipe in the #{cookbook_name} cookbook.")

Этот и другие удобные методы описаны в Рецепт DSL на сайте Opscode.

Я не уверен насчет названия рецепта, но вы можете использовать __FILE__ для регистрации имени файла исполняемого в данный момент скрипта Ruby:

Chef::Log.info("#{__FILE__}")

появляется как

[2013-02-13T20:39:10+00:00] INFO: /tmp/vagrant-chef-1/chef-solo-1/cookbooks/gem/recipes/default.rb

по крайней мере, для шеф-повара.

Я знаю, что это старый пост, но он по-прежнему остается лучшим результатом Google, поэтому я подумал, что было бы неплохо добавить обновленный ответ для Chef 12.

В Chef 12 я использую это прямо в своем рецепте:

log("Recipe @ #{__FILE__}")

Результат выглядит так:

* log[Recipe @ /var/chef/cache/cookbooks/crafter-cms-dev/recipes/test.rb] action write