Я пишу рецепт, который компилирует и устанавливает приложение из исходного кода, но также изменяет файлы конфигурации в каталогах, которые создаются после завершения установки приложения. Рецепт выглядит примерно так:
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.
Шеф-повар выполняет рецепт параллельно? Есть ли способ заблокировать выполнение до завершения команды 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