Chef中的执行顺序

时间:2015-10-29 22:32:00

标签: chef chef-recipe chef-solo

我对厨师有点新意。我只是想知道厨师资源是否像node-js一样。

例如,

recipe.rb

resource1 'foo' do
    property value
end

resource2 'bar' do
    property value
end

考虑resource1是一个重量级的过程,resource2是一个轻量级的过程。在这种情况下,bar是否可能首先执行,然后foo?或者首先按顺序执行foo,然后执行bar

1 个答案:

答案 0 :(得分:3)

厨师食谱势在必行,它们将按顺序运行。运行列表也是一个将按顺序运行的数组。除非您多次在运行列表中定义相同的内容,否则只会运行第一个。

虽然厨师经营有两个阶段。编译阶段,用于组织需要运行的资源并解决所有变量。然后是运行阶段,其中每个资源实际执行。您可以编写在编译阶段触发操作的配方,这可能使其看起来无序。

例如,chef_gem资源旨在在编译阶段执行操作,以便在运行阶段可以使用gem。 compile_time选项可用于关闭此功能。

对于一个功能性的例子......

ruby_block "later" do
  block do
    Chef::Log.info "I am first in the file"
  end
end

Chef::Log.info "I am second in the file"

ruby​​块是一个被编译以供以后执行的资源 ruby代码在编译期间执行,因此首先出现。