什么是厨师食谱/食谱/属性的执行顺序?

时间:2014-12-17 17:44:57

标签: chef

假设我正在使用2本烹饪书A和B,每本食谱中都有a,b,c食谱。 如果我将两个烹饪书分配给一个节点,那么烹饪书和食谱的执行顺序是什么?哪个食谱A或B将首先运行,什么是a,b,c的序列。如果我将 var 定义为变量并在配方中使用它然后将使用属性文件变量,则此问题也适用于a,b,c,d四个属性文件中的属性文件。请给我一些建议我是厨师的新手。

3 个答案:

答案 0 :(得分:0)

这比首次出现的要复杂一些。我有一本使用chefspec测试来演示它的食谱,但遗憾的是它已经损坏了。当我修复它时,我会尝试将其添加到此处。这是你的答案。

属性

  1. 在执行任何配方之前,所有属性文件都会执行。
  2. 属性文件仅在具有相同名称的同一食谱中存在配方时执行。
    • include_attribute附带的属性文件将运行,无论是否存在相应的配方。
  3. 不会多次评估任何属性文件。
  4. 默认情况下,在单个食谱中,将按字典顺序评估所有属性文件。
    • include_attribute中包含的属性文件将在首次包含的位置进行评估,无论名称是什么
  5. 我相信每个食谱的 属性文件会在加载该食谱时进行评估(我认为这是按字典顺序排列) - 我还没有确认这个。< / LI>

    食谱

    配方将按照它们在运行列表中的显示顺序执行。    - 如果另一个人使用include_recipe包含一个配方,理论上它可以执行两次

答案 1 :(得分:0)

完成Tejay的回答:

@DisplayNameismissing的链接解释但粗略地说:运行列表已经用完,每个依赖关系都已解决,而且烹饪书以相反的顺序加载(最深层依赖于第一个)

让我说我有2本烹饪书

A取决于B和C. X取决于Y

我的运行列表是X然后是A

烹饪书(以及属性)的加载将是Y - > X - &gt; C - &gt; B - &gt;甲

对于include_recipe,它不能运行两次,如果它被包含多次,将被忽略,因为它已经在运行列表中。

使用11.16版本的厨师客户端,上面运行的日志级别的信息将显示在运行开始时(订单)完成的操作

答案 2 :(得分:0)

您的食谱将按照您在运行列表中指定的顺序执行。 如果您尚未指定要执行的配方,它将查找默认配方​​并执行该配方。

让你有两本烹饪书A和B.你已经将两本食谱添加到角色C中。当你有一个与这个角色相关的节点时,烹饪书将按照你在角色中指定的顺序执行。我们假设我们在角色中指定了第一个。然后它会在A中寻找默认配方​​。