了解厨师属性

Understanding chef attributes

我是一名厨师新手,正在努力了解

之间的区别
default[:foo] = 'something'

node[:foo]

node.default[:foo] = 'nothing'

我知道 chef 文档中的属性有一个属性优先级,但我仍然想验证我的理解是否正确。

我的理解

我想我想在这里证明的一点是node[:foo]是只取不设的,default[:foo]也是如此,node.default[:foo]也是只对setter 属性?

厨师惯例会不时发生变化。 如果您使用的是最新的 Chef 版本,您应该使用 node.default 而不是旧方法。

阅读attribute precedence了解更多信息

考虑节点属性的最简单方法就像变量一样。

  • node.default[:foo] = 'something' # 分配 attribute/variable
  • node.default[:foo] # 访问 attribute/variable
  • 的内容

随着优先级的不同,它变得更加复杂,但这就是要点。

default[:foo] = 'something'node.default[:foo] = 'something' 在功能上是一样的。您可以在属性文件的前面使用没有节点的默认值,但不能在配方中使用。只是一条捷径。

Chef 首先加载属性文件,因此如果您在那里设置了默认值[:foo],然后在食谱中设置了 node.default[:foo],该值将被覆盖。