Chef infra 使用默认属性值,除非在节点属性中重写

Chef infra 使用默认属性值,除非在节点属性中重写,chef-infra,Chef Infra,对于模板中使用的chef中的属性,使用默认值最礼貌的方式是什么 因此在default/attributes.rb中,我有一个默认值: default['my_attribute'] = 'some_default_value' 我想在一些具有节点属性的选定节点上覆盖它: node['my_attribute'] = 'some_defined_value' 在我的模板中,我只想使用: @my_attribute 它将从默认值['my_属性']或节点['my_属性'](如果已定义)获取值 做

对于模板中使用的
chef
中的属性,使用默认值最礼貌的方式是什么

因此在
default/attributes.rb中,我有一个默认值:

default['my_attribute'] = 'some_default_value'
我想在一些具有节点属性的选定节点上覆盖它:

node['my_attribute'] = 'some_defined_value'
在我的模板中,我只想使用:

@my_attribute
它将从默认值['my_属性']或节点['my_属性'](如果已定义)获取值

做这件事最有礼貌和
厨师的方式是什么?

首先,我建议你看一下这本书,以供参考

您是正确的,在属性文件中,定义如下内容(注意,在烹饪书之后为属性命名是常见的做法):

然后在配方中,您可以通过调用
节点来变异
节点
对象。set

node.set['cookbook']['attribute'] = 'new_value'
这将保存当前节点状态并将其保留回服务器(如果使用Chef服务器)

然后,在
模板中
资源中,直接传入值:

template '/tmp/foo.txt' do
  variables(
    :my_attribute => node['cookbook']['attribute']
  )
end
template '/tmp/foo.txt' do
  variables(
    :my_attribute => node['cookbook']['attribute']
  )
end