2012-06-30 57 views
2

我有两个食谱:强制执行的顺序厨师食谱

  1. 配置我的主目录的东西像我的.bashrc,运行在几乎所有的机器,我用
  2. 坐骑包含我的主目录EBS卷。这一次只能由单个EC2实例使用,但可以让我轻松迁移到新实例

对于此EC2实例首次启动时,我需要在执行前配方#2配方#1或音量将不会被安装。我怎样才能确保这个执行顺序将被明确强制?

回答

14

厨师总是在您指定的顺序执行的食谱。它不会任意重新排序。所以,如果你想在另一个之前要运行一个配方,只是加载它们的顺序(如在run_list

为了进一步加强这(在你的食谱之间的附加连接的代价),你也可以在他使用include_recipe第二个配方开始加载第一个配方。

+0

那么这个http://serverfault.com/questions/604719/chef-recipe-order-of-execution-redux和这个http://erik.hollensbe.org/2013/03/16/the-厨师资源运行队列/讨论?他们似乎都认为有两个截然不同的编译和运行阶段,编译阶段最终会重新排序。 – mmcrae

+3

@mmcrae你确实有两个阶段:你的食谱被评估和资源收集的编译阶段,以及这个集合被一个接一个地执行的收敛阶段。通常情况下,资源只在编译阶段的资源收集结束时添加。但是,您可以影响这一点(例如通过自定义代码或使用通知)。也就是说,如果没有明确的依赖关系,厨师仍然不会随机重新排序资源(比如木偶)。它始终使用定义资源的隐式顺序。 –

-2

如果你想在登录时(而不是启动时)来完成这两个动作......

...如果你需要他们在一个特定的顺序完成...

...然后你应该简单地写一个脚本,调用这两个他们。按正确的顺序。

恕我直言...