Должен ли я использовать include_recipe или добавлять рецепт в run_list?

Попытка выяснить лучший подход к крупному проекту. Когда целесообразно добавлять рецепты в рецепт, используя include_recipe, а не добавлять рецепт к run_list? Есть ли хорошее эмпирическое правило?

Ответ 1

Как я вижу, любой рецепт должен работать на пустой машине сам по себе. Так что если какой-то рецепт А зависит от рецепта B, перед ним я всегда использую include_recipe.

Например: 2 поваренные книги, tomcat и java. Tomcat требует java.

  • Когда какой-то пользователь хочет установить tomcat, он, возможно, даже не подозревает, что на самом деле ему нужна другая кулинарная книга для его установки. Он запускает рецепт tomcat, и либо он терпит неудачу с каким-то совершенно бесполезным сообщением об ошибке, например "Нет java found", либо еще хуже - ему это удается, но тогда, конечно, пользователь не может запустить tomcat, потому что у него нет java.

  • Но когда есть строка include_recipe 'java' в кулинарной книге tomcat, которая также нуждается в строке depends 'java' в метаданных, пользователь при попытке установить tomcat увидит понятное сообщение об ошибке: "cookbook java not найденный". Таким образом, на самом деле пользователь может загружать зависимости самостоятельно (или даже с помощью некоторого автоматического инструмента) без фактического запуска рецептов, но чтение метаданных.

Ответ 2

Вся логика должна управляться списками запусков. Поваренные книги, старайтесь, как они могли, не так много, как люди хотели бы думать. Все include_recipe это добавляет другое место, где пользователи должны посмотреть, что будет делать список выполнения, сделать его явным и поместить в список выполнения.