我正在编写一个配方,从源代码编译和安装应用程序,但也更改应用程序完成安装时创build的目录中的configuration文件。 配方看起来像这样:
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安装完成后才创build的目录中。
厨师是否同时执行配方? 有没有办法阻止执行,直到bash命令完成? 任何帮助,将不胜感激。 谢谢。
它应该按顺序运行。 如果你得到这个错误,我认为你可能在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