我编辑了示例代码来阐明我的问题。我认为现在的答案更有意义,因为我的第一个食谱确实在ruby_block中。厨师客户端运行期间何时设置默认节点属性?
在客户端运行期间何时可以使用默认节点属性?让我澄清一下。我的例子是简化的,但我想要做的比这更复杂,但概念是相似的。
我引导了一个节点,它运行一个空的运行列表。到现在为止还挺好。
现在我将我的hello_world食谱添加到我的节点的运行列表中。
knife node run_list add node_name "recipe[hello_world]"
在我的程序hello_world食谱,我已经在属性/ default.rb定义以下默认属性
default.hello_world.location = ''
我有一个食谱/ default.rb,这是否
include_recipe "hello_world::set_location"
include_recipe "hello_world::show_location"
recipes/set_location.rb does
ruby_block "Set location" do
block do
node.set.hello_world.location = "New York!"
end
end
个
和食谱/ show_location.rb做到这一点,使用日志资源
log "Hello #{node.hello_world.location}"
我应该会看到这样的厨师客户端运行...
Hello New York!
......或者干脆此,因为食谱尚未完全运行,因此其属性尚未与主厨服务器同步?
Hello
我得到后者,就是没有“纽约!”就是“你好”。
如何让我的食谱记录“纽约你好!”客户端运行后?
也就是说,一般来说,如何在一个配方中设置节点属性,以便我可以在厨师客户端运行期间在同一本食谱的不同配方中使用它们?
这是等价的:“纽约” node.set.hello_world.location =和node.set ['hello_world'] ['location'] =“纽约!”我会看懒惰的评价。 – 2015-02-06 14:21:00
@ChrisF它是一个真正的“测试食谱”还是基于您的实际问题的一个例子? – Tensibai 2015-02-06 14:32:38
这是一本我遇到问题的实际食谱。这个概念与 – 2015-02-06 18:23:28