2012-06-13 184 views
4

说我有以下厨师角色:厨师的角色和环境default_attributes无法访问

name "test" 
description "role for test" 
run_list %w(recipe[cookbook_name]) 
default_attributes(
    :cookbook_name => { 
    :a => 1 
    } 
) 

和相应的环境:

name "test environment" 
description "environment for test" 
default_attributes(
    :cookbook_name => { 
    :b => 2 
    } 
) 

然后在我的食谱的属性我有这样的:

parent = default[:cookbook_name] 
parent[:c] = 3 

attribute documentation会让我相信这些将是一个在node[:cookbook_name][:a]node[:cookbook_name][:b]的配方范围内可用。但是,当我尝试访问我的实际烹饪书中的内容时,我得到了nil。这是怎么回事?我是否误解了这些属性的作用?我认为值得注意的是,即使我在属性文件中为这些属性设置了默认值,我也得到了相同的结果,导致我相信我正在访问错误的属性。

我在做什么错?

回答

2

这确实是应该如何工作的。在“cookbook_name”配方中,您应该可以使用:a:b两个元素访问:cookbook_name散列。

您是否已将节点上的运行列表和环境设置为包含您列出的角色和环境?运行knife node show应该显示这一点。

+0

是的,但事实证明环境未能上传。谢谢你的好回答! –