Chef infra 执行厨师食谱中的执行顺序

Chef infra 执行厨师食谱中的执行顺序,chef-infra,Chef Infra,我有两个食谱: 用my.bashrc之类的东西配置我的主目录,它几乎可以在我使用的每台机器上运行 装载包含我的主目录的EBS卷。这一次只能由一个EC2实例使用,但可以让我轻松地迁移到一个新实例 在这个EC2实例第一次启动时,我需要在配方1之前执行配方2,否则卷还没有装入。如何确保显式强制执行此执行顺序?如果希望在登录时(而不是启动时)执行这两个操作 。。。如果你需要按照特定的顺序来做 。。。然后,您只需编写一个脚本来调用它们。按正确的顺序 我知道,厨师总是按照你指定的顺序来执行食谱。它不会随意重

我有两个食谱:

  • 用my.bashrc之类的东西配置我的主目录,它几乎可以在我使用的每台机器上运行
  • 装载包含我的主目录的EBS卷。这一次只能由一个EC2实例使用,但可以让我轻松地迁移到一个新实例

  • 在这个EC2实例第一次启动时,我需要在配方1之前执行配方2,否则卷还没有装入。如何确保显式强制执行此执行顺序?

    如果希望在登录时(而不是启动时)执行这两个操作

    。。。如果你需要按照特定的顺序来做

    。。。然后,您只需编写一个脚本来调用它们。按正确的顺序

    我知道,厨师总是按照你指定的顺序来执行食谱。它不会随意重新安排事情。因此,如果您希望先运行一个配方,然后再运行另一个配方,只需按该顺序加载它们(例如,在
    run\u列表中


    为了进一步加强这一点(以牺牲配方之间的额外耦合为代价),您还可以在第二个配方的开头使用
    include\u recipe
    来加载第一个配方。

    那么这个和这个讨论呢?他们似乎都认为有两个不同的编译和运行阶段,在这两个阶段中,编译阶段可能会重新排序。@mmcrae您确实有两个阶段:编译阶段,在这两个阶段中,您的配方会被评估,资源集合会被构建,而聚合阶段则会一个接一个地执行此集合。通常,资源只是在编译阶段添加到资源集合的末尾。但是,您可以影响这一点(例如,通过自定义代码或使用通知)。这就是说,chef仍然不会在没有明确依赖关系的情况下随机重新订购资源(例如puppet)。它总是使用资源定义的隐式顺序。