【问题标题】:Attributes precedent in chef属性先例在厨师
【发布时间】:2015-11-20 12:11:21
【问题描述】:

我在Chef site 中读到,对于环境中指定的默认属性,其优先级高于角色中指定的默认属性。这是有道理的,因为我们可能有不同的 Web 服务器用于开发、测试和生产。

但是在覆盖属性的情况下,这是相反的,即角色的覆盖属性优先于角色的覆盖属性。我无法猜测这背后的原因?谁能解释一下为什么厨师选择这样的优先顺序。

我还添加了厨师网站中给出的属性优先级的完整列表

  • cookbook 属性文件中指定的default 属性。
  • recipe 中指定的default 属性。
  • 环境中指定的default属性。
  • 角色中指定的default属性。
  • 说明书属性文件中指定的force_default属性。
  • recipe 中指定的force_default 属性。
  • cookbook 属性文件中指定的normal 属性。
  • recipe 中指定的normal 属性。
  • cookbook 属性文件中指定的override attribute
  • recipe 中指定的override attribute
  • 角色中指定的override attribute
  • 环境中指定的override attribute
  • cookbook 属性文件中指定的force_override 属性。
  • recipe 中指定的force_override 属性。
  • Ohai 运行期间收集的automatic 属性。

谢谢

【问题讨论】:

  • 这里不适合问“为什么?”像这样的问题。欢迎您跳上 IRC 并在那里询问。
  • 情况正好相反。在角色上设置的default 属性优先于在环境中设置的属性——即,如果您在角色和环境上设置相同的默认值,则角色上的属性将获胜。 override 属性则相反。如果您覆盖环境中的某个属性,它将胜过其他地方设置的覆盖,包括角色。

标签: ruby chef-infra chef-recipe


【解决方案1】:

覆盖顺序的解释在您链接到的网站上。不过要清楚,因为这是一个常见的混淆,该文档中的优先级是指将值馈送到评估序列的顺序。因为评估采用覆盖形式,所以最低优先级值是您在评估完成后获得的值。因此无法覆盖 Ohai 提供的值。

角色和环境的属性优先顺序颠倒了 用于默认和覆盖属性。默认的优先顺序 属性是环境,然后是角色。优先顺序为 覆盖属性是角色,然后是环境。应用环境 在角色覆盖属性之后覆盖属性允许相同 在多个环境中使用的角色,但确保值 可以设置特定于每个环境(需要时)。为了 例如,应用服务器的角色可能存在于所有 环境,但一个环境可能使用数据库服务器 不同于其他环境。

至于为什么默认不使用与覆盖相同的逻辑,我不知道。

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多