了解厨师属性
Understanding chef attributes
我是一名厨师新手,正在努力了解
之间的区别
default[:foo] = 'something'
和
node[:foo]
和
node.default[:foo] = 'nothing'
我知道 chef 文档中的属性有一个属性优先级,但我仍然想验证我的理解是否正确。
我的理解
default[:foo] = 'something'
这是最低优先级并设置 foo
node[:foo]
这没有设置任何东西,只是获取 foo 的值,典型用例是条件语句
node.default[:foo] = 'nothing'
覆盖 default[:foo]
我想我想在这里证明的一点是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],该值将被覆盖。
我是一名厨师新手,正在努力了解
之间的区别default[:foo] = 'something'
和
node[:foo]
和
node.default[:foo] = 'nothing'
我知道 chef 文档中的属性有一个属性优先级,但我仍然想验证我的理解是否正确。
我的理解
default[:foo] = 'something'
这是最低优先级并设置foo
node[:foo]
这没有设置任何东西,只是获取 foo 的值,典型用例是条件语句node.default[:foo] = 'nothing'
覆盖default[:foo]
我想我想在这里证明的一点是node[:foo]
是只取不设的,default[:foo]
也是如此,node.default[:foo]
也是只对setter 属性?
厨师惯例会不时发生变化。
如果您使用的是最新的 Chef 版本,您应该使用 node.default
而不是旧方法。
阅读attribute precedence了解更多信息
考虑节点属性的最简单方法就像变量一样。
node.default[:foo] = 'something'
# 分配 attribute/variablenode.default[:foo]
# 访问 attribute/variable 的内容
随着优先级的不同,它变得更加复杂,但这就是要点。
default[:foo] = 'something'
和 node.default[:foo] = 'something'
在功能上是一样的。您可以在属性文件的前面使用没有节点的默认值,但不能在配方中使用。只是一条捷径。
Chef 首先加载属性文件,因此如果您在那里设置了默认值[:foo],然后在食谱中设置了 node.default[:foo],该值将被覆盖。