属于厨师的先例

时间:2015-08-26 12:36:02

标签: ruby chef chef-recipe

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

但是在覆盖属性的情况下,这是反向的,即角色的覆盖属性优先于角色的覆盖属性。我无法猜出这背后的原因?任何人都可以解释一下为什么厨师选择了这样的优先顺序。

我还在主厨网站

中添加完整的属性优先级列表
  • 食谱属性文件中指定的webView属性。
  • 食谱中指定的default属性。
  • 环境中指定的default属性。
  • 角色中指定的default属性。
  • 食谱属性文件中指定的default属性。
  • 食谱中指定的force_default属性。
  • 食谱属性文件中指定的force_default属性。
  • 食谱中指定的normal属性。
  • 食谱属性文件中指定的normal
  • 食谱中指定的override attribute
  • 角色中指定的override attribute
  • 环境中指定的override attribute
  • 食谱属性文件中指定的override attribute属性。
  • 食谱中指定的force_override属性。
  • Ohai run 期间收集的force_override属性。

由于

1 个答案:

答案 0 :(得分:0)

覆盖订单的说明在您链接的网站上。但请注意,因为这是一个常见的混淆,文档中的优先级指的是将值输入评估序列的顺序。由于评估采用覆盖形式,因此最低优先级值是评估完成后得到的值。因此,没有办法超越Ohai提供的价值。

  

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

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