我編輯了示例代碼來闡明我的問題。我認爲現在的答案更有意義,因爲我的第一個食譜確實在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