如何在ruby块中设置节点级属性。我有一个用例,我在所有资源中使用该属性。我正在阅读有关融合与编译时间的内容,我明白了。但我需要一些关于如何在这里使用延迟评估的建议。
这是我的代码,读取一个json文件并将该值用作节点属性
ruby_block 'package' do
block do
file = open("/tmp/pkg.json")
json = file.read
parsed = JSON.parse(json)
node.override['artifact']['version'] = parsed["artifact"]["version"]
end
only_if { File.exist?("/tmp/pkg.json") }
action :run
end
和配方如下
deploy_art = "#{id}-#{node['artifact']['version']}.war".
<< ---我如何在这里使用懒惰的eval?
试过这个,没有运气
deploy_art = "#{id}-lazy{ #{node['artifact']['version']}}.war"
懒惰的评价
我想用ruby_block属性构造deploy_art变量,以便在整个配方中使用更多逻辑。显然,我想使用懒惰的eval作为一种干净的方式。
无论酒店是什么,它都必须在整个酒店周围。所以如果你有:
some_resource 'deploythething' do
artifact lazy { "#{id}-#{node['artifact']['version']}.war" }
end
那会有用。你可以做deploy_art = lazy { "#{id}-#{node['artifact']['version']}.war" }
,但请记住,只有当deploy_art
用作属性的值时它才有效,因此它实际上与上面的例子相同。