gpt4 book ai didi

chef-infra - Chef - 在节点级别设置的属性的优先级

转载 作者:行者123 更新时间:2023-12-04 23:52:30 27 4
gpt4 key购买 nike

也许我错过了文档中的某些内容,但是在阅读了在多个地方定义时使用属性的顺序后,我不明白 中的属性设置的位置节点级别 进入等式

在可以设置和覆盖属性的 1 到 15 个级别中,它提到了配方、环境、角色、属性文件,但似乎从未提到节点上定义的属性会发生什么,例如 knife node edit ...
看起来您只能在节点上定义普通类型的属性?普通属性仅针对列表中的优先级 7 和 8 提及...分别是属性文件和配方。

因此,如果我在节点上设置一个也在环境和角色级别上定义的属性,谁会获胜?

最佳答案

The Chef Documentation有一个 table showing the node attribute precedence .如果您在 Chef 服务器上编辑节点对象,或通过 JSON 文件提供节点属性(-j 给chef-solo 或chef-client 的选项),这些都是“节点”级别。这与从配方设置属性相同。简而言之,除了自动之外,您可以使用属性方法(node.normal 等)轻松地在配方中设置任何级别的节点属性。在节点对象本身(在 Chef 服务器中),您可以设置默认、正常和覆盖,但不能设置 force_default 或 force_override,也不能设置自动。

我们告诉人们的一般准则是始终使用默认属性:

  • default['thing'] = 'thang' - 在食谱的属性文件中。
  • node.default['thing'] = 'thang' - 在食谱中。
  • "default": { "thing": "thang" } - 在节点对象的 JSON
  • default_attributes("thing" => "thang") - 在一个角色中( ruby DSL syntax shown )。
  • 一般避免environment设置属性...

  • 当您需要在其他优先事项的其他地方设置属性时,您就会知道。 :)

    它可能看起来任意过度设计;最初只有节点对象/配方和属性文件,它们只是 Ruby 哈希。然后我们添加了角色和环境。在某些时候,也需要设置“默认”值,这些值可以很容易地、任意地出于各种组织原因而被覆盖,现在我们有了你今天看到的矩阵。我们现在对事情非常满意,并认为它为极其广泛的 Chef 用例提供了最大的灵活性。

    备注

    此问题与 chef versioning - is there an order of precedence 不重复- 该问题与食谱版本有关,而该问题与节点属性优先级有关。

    还要注意,因为配方是 Ruby,并且由客户端执行,所以您可以编写库来以有趣的方式操作属性。一个例子是 Chef's whitelist-node-attrs cookbook .

    关于chef-infra - Chef - 在节点级别设置的属性的优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727309/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com