我可以通过run_context对象获取元数据,例如,将它们写入文件:
file '/etc/motd' do
content "setup by [#{cookbook_name}] v#{run_context.cookbook_collection[cookbook_name].metadata.version}"
end
当我尝试在模板中执行相同操作时:
template 'etc/motd' do
source 'default/motd.erb'
end
motd.erb模板文件如下:
generated by <%= run_context.cookbook_collection['cookbook_name'].metadata.version %>
我遇到错误,因为run_context不是TemplateContext的方法:
Chef::Mixin::Template::TemplateError (undefined local variable or method `run_context' for #<Chef::Mixin::Template::TemplateContext:0x00000002c70c20>) on line #2:
TemplateContext似乎没有提供任何方法来检索元数据。 有没有办法从那里访问run_context?
答案 0 :(得分:3)
从技术上讲,你可以通过@node.run_context
访问它,但我真的不会这样做。您正在使用5种不同的内部API,我们不做任何承诺,这不会在Chef升级中破坏。