运行配方名称

运行配方名称

在 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

相关内容