В 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