在厨师运行期间,node与node.default有何不同



我注意到,如果我在烹饪书中使用node.default,环境中的属性不会被应用(相反,烹饪书属性会被应用)。但是,如果我使用node,那么在环境中更改的属性就会得到应用;为什么?我以为nodenode.default是一体的?

节点属性的优先级可能会令人困惑。这个文件确实有帮助,一旦你读了几遍

https://docs.chef.io/attributes.html

我的建议如下:

  1. 在烹饪书的属性文件中设置默认属性。不要在食谱中也这样做,从而混淆自己
  2. 通过设置"正常"属性覆盖其他烹饪书的属性,并在烹饪书中的属性文件中再次执行此操作
  3. 在运行时,使用"环境"或"角色"属性覆盖食谱中设置的所有属性
  4. 永远不要直接在厨师服务器上编辑节点属性。没有事务锁定,这意味着如果厨师客户端同时运行,您的更新可能会丢失

这里的目标是一致性

node为您提供了整个节点对象的视图。仅node.default告诉您在default级别设置了哪些值。因此,您永远不应该阅读node.default,因为您将明确忽略所有更高的先例级别。即,你的overrides不算在内。node.default的存在允许您在节点上设置默认值。

相关内容

最新更新