【发布时间】: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