在 Chef 中,当该食谱运行时是否可以获取食谱名称?
我想在日志/调试中添加配方名称。例如:
Chef:Log.info "#{recipe_name} xxxx"
答案1
您实际上可以按照问题中所建议的方式获取食谱名称!
Chef::Log.info("I am a message from the #{recipe_name} recipe in the #{cookbook_name} cookbook.")
这个和其他方便的方法记录在配方 DSLOpscode 网站上的页面。
答案2
我不确定配方名称,但您可以使用它__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
至少对于 chef-solo 来说是这样。
答案3
我知道这是一篇旧帖子,但它仍然是 Google 搜索结果中排名第一的搜索结果,因此我认为最好添加 Chef 12 的更新答案。
在 Chef 12 中,我直接在菜谱中使用它:
log("Recipe @ #{__FILE__}")
输出如下所示:
* log[Recipe @ /var/chef/cache/cookbooks/crafter-cms-dev/recipes/test.rb] action write