the*_*cer 5 chef-infra chef-recipe
我在默认属性文件中定义了此属性:
default['remote_machine']['user']['file_name'] = '/folder/path/file_name.html'
Run Code Online (Sandbox Code Playgroud)
我试图在配方中引用此属性名称,如下所示:
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
)
Run Code Online (Sandbox Code Playgroud)
试图上传这本食谱,我得到一个错误:
FATAL: ArgumentError: You must supply a name when declaring a default resource
Run Code Online (Sandbox Code Playgroud)
如果我提供一个包含路径作为资源参数的字符串,它就可以工作.
任何人都可以帮助我理解我所缺少的东西吗?
谢谢.
set*_*rgo 14
这里有两个问题,第一个是第二个更明显
设置节点属性时,可以指定优先级(如自动,默认,正常和覆盖).通常,这是在您的attribtue文件中完成的.
当您访问该信息时,它存储在node对象上,因此您需要使用node密钥:
node['remote_machine']['user']['home']['file_name']
Run Code Online (Sandbox Code Playgroud)
但是你得到这个错误的真正原因是你正在访问一个未定义的属性.你定义了remote_machine.user.file_name但是你正在使用remote_machine.user.home.file_name