我在默认属性文件中定义了此属性:
default['remote_machine']['user']['file_name'] = '/folder/path/file_name.html'
我正在尝试在配方中引用此属性名称,如下所示:
list_of_nodes = search(:node,"name:production_* AND name:*app*")
template default['remote_machine']['user']['home']['file_name'] do #ERROR HERE
source "file_name.html.erb"
mode "755"
variables(
:list_of_ips=>list_of_nodes
)
尝试上传此食谱,我收到错误:
FATAL: ArgumentError: You must supply a name when declaring a default resource
如果我提供一个包含路径作为资源参数的字符串,它就可以工作。
任何人都可以帮助我理解我所缺少的东西吗?
感谢。
答案 0 :(得分:14)
这里有两个问题,第一个更明显的是第二个
设置节点属性时,可以指定优先级(如自动,默认,正常和覆盖)。通常,这是在您的attribtue文件中完成的。
当您访问该信息时,它存储在node
对象上,因此您需要使用node
密钥:
node['remote_machine']['user']['home']['file_name']
但是您收到此错误的真正原因是您正在访问未定义的属性。您已定义remote_machine.user.file_name
但您正在使用remote_machine.user.home.file_name
答案 1 :(得分:4)
您可以根据优先级(默认,普通,覆盖)设置属性,但可以通过node
对象访问它们:
template node['remote_machine']['user']['home']['file_name'] do