кулинарная книга шеф-повара со встроенными ролями
Вопрос
Я создал кулинарную книгу шеф-повара, которая во многом зависит от других кулинарных книг.Моя главная проблема сейчас в том, что рецепты из других кулинарных книг выполняются в случайном порядке.Если я укажу выполнение этих рецептов в бродячем файле, например:
chef.add_recipe "gitlab::core_prereq"
chef.add_recipe "postfix"
chef.add_recipe "gitlab::users_prereq"
chef.add_recipe "rvm::vagrant"
chef.add_recipe "rvm::system"
chef.add_recipe "ohai"
chef.add_recipe "nginx"
chef.add_recipe "gitlab::python_tools_prereq"
chef.add_recipe "gitlab::gitolite_prereq"
chef.add_recipe "gitlab::gitlab_install"
Все работает нормально, но мне бы хотелось включить эту спецификацию в рецепт, чтобы пользователю просто нужно было включить рецепт по умолчанию и установить все необходимое в правильном порядке.
Как я могу это решить?Должен ли я использовать роль?Я не получаю этого из документов шеф-повара, если роль может быть указана в рецепте.
Решение
Я думаю не все ваши рецепты можно установить на чистую машину.Но они должны быть.Если какой-то рецепт «А» имеет некоторые предварительные требования, вам следует добавить эти необходимые рецепты в рецепт «А», используя include_recipe
.
В твоем случае я думаю, что gitlab::gitlab_install требует gitlab::gitolite_prereq и gitlab::python_tools_prereq.Это означает, что вам следует добавить к вашему cookbooks/gitlab/recipes/gitlab_install.rb
:
incude_recipe 'gitlab::gitolite_prereq'
incude_recipe 'gitlab::python_tools_prereq'
Таким образом вы также можете включать рецепты из других кулинарных книг.Например охай требует рвм::система.добавить в cookbooks/ohai/recipes/default.rb
:
incude_recipe 'rvm::system'
и добавить в cookbooks/ohai/metadata.rb
:
depends 'rvm'
Таким образом, вам не придется писать все рецепты в каком-то точном порядке, и вам не придется писать все зависимости, они будут установлены автоматически.