厨师菜谱执行顺序

厨师菜谱执行顺序

我正在编写一个配方,它从源代码编译和安装应用程序,但也会更改应用程序安装完成后创建的目录中的配置文件。配方如下所示:

bash "install inspircd from source" do
  ...
  code <<-EOH
    ....
    make && \
    make install
  EOH
end

...

# Copy over the configuration template
template "<config dir>/inspircd.conf" do
  source "inspircd.conf.erb"
  ....
end

根据文档,“资源按照它们出现的顺序执行”。但 Chef 似乎并没有按照它们出现的顺序执行,因为它试图将模板文件放入仅在 make install 完成后创建的目录中。

Chef 是否并行执行配方?有没有办法阻止执行直到 bash 命令完成?任何帮助都将不胜感激。谢谢。

答案1

它应该按顺序运行。如果您收到该错误,我认为您的 bash 块可能存在问题。

无论如何,您都可以在模板中执行“only_if”。例如:

template "<config dir>/inspircd.conf" do
  source "inspircd.conf.erb"
  ....
  only_if "test -d <config dir>" 
end

http://wiki.opscode.com/display/chef/Resources#Resources-ConditionalExecution

相关内容