Chef infra 厨师烹饪书/食谱/属性的执行顺序是什么?

Chef infra 厨师烹饪书/食谱/属性的执行顺序是什么?,chef-infra,Chef Infra,假设我使用了两本食谱食谱A和B,每本食谱中都有A、B、c食谱。 如果我将两本食谱都分配给一个节点,那么食谱和食谱的执行顺序是什么?。哪个食谱A或B将首先运行,A、B、c的顺序是什么。这个问题也适用于a、b、c、d四个属性文件中的属性文件,如果我将var定义为变量并在配方中使用它,那么将使用哪个属性文件变量。请给我一些建议,我是厨师的新手。这比第一次出现时要复杂一些。我有一本使用chefspec测试来演示它的食谱,但遗憾的是它被破坏了。当我把它修好后,我会试着把它加在这里。这是给你的答案 属性 在

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

这比第一次出现时要复杂一些。我有一本使用chefspec测试来演示它的食谱,但遗憾的是它被破坏了。当我把它修好后,我会试着把它加在这里。这是给你的答案

属性
  • 在执行任何配方之前,将执行所有属性文件
  • 属性文件仅在同一食谱中存在同名食谱时执行。
    • 无论是否存在相应的配方,随
      include\u attribute
      包含的属性文件都将运行
  • 没有属性文件将被计算多次
  • 默认情况下,在单个cookbook中,所有属性文件都将按字典顺序计算。
    • include\u属性
      包含的属性文件将在第一次包含时进行计算,而不管其名称如何
  • 我相信每个食谱的属性文件都会在加载该食谱时进行评估(我相信是按字典顺序排列的)-我还没有确认这一点
  • 食谱 配方将按照它们在运行列表中出现的顺序执行。
    -如果一个配方被另一个使用
    include\u recipe
    的配方包含,理论上,它可以执行两次以完成Tejay回答:

    @DisplayNameismissing的链接只是粗略地解释一下:运行列表被扩展,每个依赖项都被解析,烹饪书以相反的顺序加载(首先)

    假设我有两本食谱

    A依赖于B和C X依赖于Y

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

    烹饪书(以及其他属性)的加载将是Y->X->C->B->A

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


    使用11.16版及更高版本的chef client,运行日志级别的信息将向您显示在运行开始时所做的操作(对于订单)

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


    假设您有两个cookbooks A和B。您已将这两个cookbook添加到角色C中。当您有一个与此角色关联的节点时,cookbooks将按照您在角色中指定的顺序执行。假设我们已经在角色中指定了第一个角色。然后,它将在A中查找默认配方。

    在厨师运行列表中读取,该列表是要运行的配方的有序列表: