Назад | Перейти на главную страницу

Порядок исполнения рецептов от шеф-повара

Я пишу рецепт, который компилирует и устанавливает приложение из исходного кода, но также изменяет файлы конфигурации в каталогах, которые создаются после завершения установки приложения. Рецепт выглядит примерно так:

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