О кулинарных книгах
Кулинарная книга — это базовая единица конфигурации и распространения политик в Chef Infra.
Кулинарная книга определяет сценарий и содержит всё необходимое для поддержки этого сценария:
- Рецепты, указывающие, какие встроенные ресурсы Chef Infra использовать и в каком порядке их применять
- Значения атрибутов, которые позволяют выполнять конфигурацию на основе среды, например
devилиprodution. - Пользовательские ресурсы для расширения Chef Infra за пределы встроенных ресурсов.
- Файлы и шаблоны для распространения информации на системы.
- Пользовательские плагины Ohai для расширения сбора конфигурации системы за пределы значений по умолчанию Ohai.
- Файл
metadata.rb, который описывает саму кулинарную книгу и все зависимости, от которых она может зависеть.
Язык Chef Infra основан на Ruby, позволяя использовать возможности Ruby, когда встроенный язык не удовлетворяет вашим потребностям. Если вы хотите узнать больше о расширении кода Chef Infra с помощью Ruby, ознакомьтесь с нашим Руководством по Ruby для получения дополнительной информации о функциональности Ruby.
Язык Chef Infra — это комплексный язык конфигурации систем с ресурсами и помощниками для конфигурации операционных систем. Язык в основном используется в рецептах Chef Infra и пользовательских ресурсах, чтобы указать клиенту Chef Infra, какие действия нужно выполнить для настройки системы. Язык Chef Infra предоставляет ресурсы для системных компонентов, таких как пакеты, пользователи или брандмауэры, а также включает помощники, позволяющие принимать решения о конфигурации на основе операционных систем, облаков, гипервизоров виртуализации и многого другого.
Клиент Chef Infra запускает рецепт только по указанию. Когда клиент Chef Infra запускает один и тот же рецепт более одного раза, каждый раз результаты будут соответствовать одному и тому же состоянию системы. Когда рецепт запускается на системе, но ничего не изменилось ни на системе, ни в рецепте, клиент Chef Infra ничего не изменит.
Компоненты
Кулинарная книга состоит из рецептов и других необязательных компонентов в виде файлов или каталогов.
| Компонент | Имя файла/каталога | Описание |
|---|---|---|
| Рецепты | recipes/ | Рецепт — это самый основной элемент конфигурации в организации. Рецепт:
|
| Атрибуты | attributes/ | Атрибут можно определить в кулинарной книге (или рецепте) и затем использовать для переопределения значений по умолчанию на узле. При загрузке кулинарной книги во время выполнения клиента Chef Infra эти атрибуты сравниваются с атрибутами, которые уже присутствуют на узле. Атрибуты, определённые в файлах атрибутов, сначала загружаются в соответствии с порядком кулинарных книг. Для каждой кулинарной книги атрибуты в файле default.rb загружаются первыми, а затем дополнительные файлы атрибутов (если они присутствуют) загружаются в лексикографическом порядке. Когда атрибуты кулинарной книги имеют приоритет над атрибутами по умолчанию, клиент Chef Infra применяет эти новые настройки и значения во время выполнения клиента Chef Infra на узле. |
| Файлы | files/ | Распространение файлов — это определённый тип ресурса, который указывает кулинарной книге, как распределить файлы, включая по узлу, платформе или версии файла. |
| Библиотеки | libraries/ | Библиотека позволяет использовать произвольный код Ruby в кулинарной книге, либо для расширения языка клиента Chef Infra, либо для реализации нового класса. |
| Пользовательские ресурсы | resources/ | Пользовательский ресурс — это абстрактный подход к определению набора действий и (для каждого действия) набора свойств и параметров проверки. |
| Шаблоны | templates/ | Шаблон — это файл, написанный на языке разметки, который использует операторы Ruby для решения сложных сценариев конфигурации. |
| Плагины Ohai | ohai/ | Можно написать пользовательские плагины Ohai для загрузки дополнительной информации о ваших узлах, которую можно использовать в рецептах. Для этого требуется Chef Infra Server 12.18.14 или более поздней версии. |
| Метаданные | metadata.rb | Этот файл содержит информацию о кулинарной книге, такую как имя кулинарной книги, описание и версия. |
Кулинарные книги сообщества
Chef поддерживает большой набор кулинарных книг. Кроме того, тысячи кулинарных книг созданы и поддерживаются сообществом:
| Компоненты | Описание |
|---|---|
| Кулинарные книги, поддерживаемые Chef | Chef поддерживает набор кулинарных книг, которые широко используются в сообществе. |
| Кулинарные книги, поддерживаемые Sous Chefs | Sous Chefs — это организация сообщества, которая сотрудничает для поддержки многих из самых используемых кулинарных книг Chef. |
| Кулинарные книги, поддерживаемые сообществом | Сообщество создало тысячи кулинарных книг, начиная от узкоспециализированных кулинарных книг, которые используются только несколькими организациями, до популярных кулинарных книг, используемых практически всеми. |
Генерация кулинарной книги
Используйте подкоманду chef generate cookbook для генерации кулинарной книги.
Кулинарная книга, сгенерированная с помощьюchef generate cookbook custom_web , создаёт кулинарную книгу с именем custom_web со структурой каталогов:
├ cookbooks
├ custom_web
| ├ .delivery
| | └ project.toml
| ├ recipes
| | └ default.rb
| ├ test
| | └ integration
| | | └ default
| | | | └ default_test.rb
| ├ .gitignore
| ├ CHANGELOG.md
| ├ chefignore
| ├ kitchen.yml
| ├ LICENSE
| ├ metadata.rb
| ├ Policyfile.rb
| └ README.md
© Chef Software, Inc.
Licensed under the Creative Commons Attribution 3.0 Unported License.
The Chef™ Mark and Chef Logo are either registered trademarks/service marks or trademarks/servicemarks of Chef, in the United States and other countries and are used with Chef Inc's permission.
We are not affiliated with, endorsed or sponsored by Chef Inc.
https://docs.chef.io/cookbooks/