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

时间:2015-11-05 21:18:15

标签: chef configuration-management

我注意到如果我在cookbook中使用node.default(而不是应用cookbook属性),环境中的属性就不会被应用。但是,如果我使用node,则会应用环境中更改的属性;为什么?我认为nodenode.default是同一个?

2 个答案:

答案 0 :(得分:3)

节点属性优先级可能令人困惑。一旦你阅读了几次,该文档确实有帮助

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

我的建议如下:

  1. 在食谱中的属性文件中设置默认属性。不要在食谱中这样做,这不要让自己感到困惑。
  2. 通过设置" normal"覆盖其他cookbook的属性属性,并再次在您的食谱中的属性文件中执行此操作
  3. 在运行时使用环境或角色属性覆盖在cookbook中设置的所有属性。
  4. 切勿直接在Chef服务器上编辑节点属性。没有事务锁定,这意味着如果厨师客户端同时运行,您的更新可能会丢失....
  5. 这里的目标是一致性

答案 1 :(得分:3)

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