了解厨师属性

问题描述 投票:0回答:2

我是一名厨师新手,并试图围绕两者之间的差异

default[:foo] = 'something'

node[:foo]

node.default[:foo] = 'nothing'

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

我的理解

  • default[:foo] = 'something'这是最低优先级并设置foo
  • node[:foo]这不是设置任何东西,只是获得foo的值,典型的用例是条件语句
  • node.default[:foo] = 'nothing'凌驾于default[:foo]

我想我想在这里证明的一点是node[:foo]仅用于获取而不是设置,对于default[:foo]node.default[:foo]它们也只适用于setter属性?

chef chef-recipe
2个回答
2
投票

厨师大会不时变化。如果你使用最新的厨师版,你应该使用node.default而不是旧的方式。

阅读attribute precedence了解更多信息


1
投票

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

  • node.default[:foo] = 'something'#分配属性/变量
  • node.default[:foo]#访问属性/变量的内容

不同级别的优先级会变得更复杂,但这就是要点。

default[:foo] = 'something'node.default[:foo] = 'something'在功能上是一回事。您可以在Attributes文件的前面使用默认情况下不带节点,但不能在配方中使用。它只是一个捷径。

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

© www.soinside.com 2019 - 2024. All rights reserved.