Spec-Zone.ru › Chef 18

О кулинарных книгах

[править на GitHub]

Кулинарная книга — это базовая единица конфигурации и распространения политик в 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/

Рецепт — это самый основной элемент конфигурации в организации. Рецепт:

  • Написан на языке Ruby, который является языком программирования, разработанным для предсказуемого чтения и поведения
  • В основном представляет собой набор ресурсов, определённых с помощью шаблонов (имена ресурсов, пары атрибут-значение и действия); при необходимости добавляется вспомогательный код на Ruby
  • Должен определять всё необходимое для конфигурации части системы
  • Должен храниться в кулинарной книге
  • Может включаться в другой рецепт
  • Может использовать результаты запроса поиска и читать содержимое пакета данных (включая зашифрованный пакет данных)
  • Может зависеть от одного (или нескольких) рецептов
  • Должен быть добавлен в список выполнения, прежде чем его сможет использовать клиент Chef Infra
  • Всегда выполняется в том же порядке, что и в списке выполнения
Атрибуты 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API