【发布时间】:2013-12-21 22:15:14
【问题描述】:
我正在尝试在厨师客户端运行时将属性传递给我的食谱。
以下是我的default.rb属性文件:
if node['os'] == 'windows'
if node.attribute?('temp')
default['param']['name'] = node['temp']['tempname']
else node.attribute?('base')
default['param']['name'] = node['base']['nodename']
end
end
我首先使用 node.json 文件中定义的基本属性运行 chef-client。我的node.json 看起来像:
{
"base": {
"nodename": "John"
}
}
Chef-client 运行成功,并且相应地设置了属性。即
default['param']['name'] = "John"
比我在 node.json 中定义的 base 和 temp 属性运行 chef-client。 这是我的 node.json 文件:
{
"base": {
"nodename": "John"
},
"temp": {
"tempname": "Mike"
}
}
Chef-client 再次成功运行,并相应设置了属性。
default['param']['name'] = "Mike"
问题是,当我再次运行 chef-client 并仅从 node.json 文件中传递 base 属性(文件见下文)时,代码似乎没有进入 else 循环。它只是使用临时属性(Mike)的旧值运行“if”循环。
{
"base": {
"nodename": "John-2"
}
}
关于我哪里出错的任何想法。
【问题讨论】:
标签: ruby json chef-infra