Spec-Zone.ru › Chef 16

О версиях кулинарных книг

[редактировать на GitHub]

Версия кулинарной книги представляет собой набор функциональности, отличающийся от кулинарной книги, на которой она основана. Версия может существовать по многим причинам, таким как обеспечение правильного использования стороннего компонента, исправление ошибки или добавление улучшения. Версия кулинарной книги определяется с помощью синтаксиса и операторов, может быть связана со средами, метаданными кулинарной книги и/или списками выполнения и может быть заморожена (чтобы предотвратить нежелательные обновления).

Версия кулинарной книги поддерживается так же, как и сама кулинарная книга, в отношении управления исходным кодом, загрузки на сервер Chef Infra и того, как Chef Infra Client применяет эту кулинарную книгу при конфигурировании узлов.

Синтаксис

Версия кулинарной книги всегда имеет вид x.y.z, где x, y и z — десятичные числа, используемые для представления основных (x), второстепенных (y) и исправленных (z) версий. Также разрешена версия из двух частей (x.y). Не допускаются буквенно-цифровые номера версий (1.2.a3) и номера версий с более чем тремя частями (1.2.3.4).

Ограничения

Ограничение версии — это строка, которая объединяет синтаксис версии кулинарной книги с оператором в следующем формате:

operator cookbook_version_syntax

Примечание

Версии кулинарных книг с одной цифрой не допускаются. Версии кулинарных книг должны указывать, по крайней мере, основную и второстепенную версии. Например, используйте 1.0 или 1.0.1; не используйте 1.

Можно использовать следующие операторы:

Оператор Описание
= равно
> больше
< меньше
>= больше или равно; также известен как «оптимистично больше», или «оптимистичный»
<= меньше или равно
~> приблизительно больше; также известен как «пессимистично больше», или «пессимистичный»

Например, ограничение версии для «равно версии 1.0.7» записывается так:

= 1.0.7

Ограничение версии для «больше версии 1.0.2» записывается так:

> 1.0.2

Оптимистичное ограничение версии — это ограничение, которое ищет версии, большие или равные указанной версии. Например:

>= 2.6.5

соответствует кулинарным книгам, большим или равным 2.6.5, таким как 2.6.5, 2.6.7 или 3.1.1.

Пессимистичное ограничение версии — это ограничение, которое найдёт верхнюю границу номера версии в диапазоне, заданном номером второстепенной версии или номером исправленной версии. Например, пессимистическое ограничение версии для второстепенных номеров версий:

~> 2.6

соответствует кулинарным книгам, которые больше или равны версии 2.6, но меньше версии 3.0.

Или, пессимистическое ограничение версии для номеров исправленных версий:

~> 2.6.5

соответствует кулинарным книгам, которые больше или равны версии 2.6.5, но меньше версии 2.7.0.

Или, пессимистическое ограничение версии, которое соответствует кулинарным книгам, меньше указанного номера версии:

< 2.3.4

или соответствует кулинарным книгам, меньше или равным определенной версии:

<= 2.6.5

Метаданные

Каждая кулинарная книга требует небольшого количества метаданных. Файл с именем metadata.rb находится в верхней части структуры каждого каталога кулинарной книги. Содержимое файла metadata.rb предоставляет информацию, которая помогает Chef Infra Client и Server правильно развертывать кулинарные книги на каждом узле.

Версии и ограничения версий могут быть указаны в файле metadata.rb кулинарной книги с помощью следующих функций. Каждая функция принимает имя и необязательное ограничение версии; если ограничение версии не указано, используется значение >= 0.0.0 по умолчанию.

Функция Описание

depends

Показывает, что кулинарная книга имеет зависимость от другой кулинарной книги. Используйте ограничение версии для определения зависимостей для версий кулинарных книг: < (меньше), <= (меньше или равно), = (равно), >= (больше или равно; также известен как «оптимистично больше», или «оптимистичный»), ~> (приблизительно больше; также известен как «пессимистично больше», или «пессимистичный»), или > (больше). Это поле требует, чтобы на сервере Chef Infra существовала кулинарная книга с соответствующим именем и версией. Когда соответствие существует, сервер Chef Infra включает зависимость в качестве части набора кулинарных книг, которые отправляются узлу при выполнении Chef Infra Client. Очень важно, чтобы поле depends содержало точные данные. Если утверждение о зависимости неточно, Chef Infra Client может не завершить конфигурацию системы. Например:

depends 'opscode-base'

или:

depends 'opscode-github', '> 1.0.0'

или:

depends 'runit', '~> 1.2.3'
provides Добавляет рецепт, определение или ресурс, предоставляемый этой кулинарной книгой, если автоматический список недостаточен.
supports Показывает, что кулинарная книга поддерживает платформу. Используйте ограничение версии для определения зависимостей для версий платформ: < (меньше), <= (меньше или равно), = (равно), >= (больше или равно), ~> (приблизительно больше), или > (больше). Для указания более чем одной платформы используйте более одного поля supports — по одному для каждой платформы.

Среды

Среда может использовать ограничения версий для указания списка разрешенных версий кулинарных книг, указав имя кулинарной книги вместе с ограничением версии. Например:

cookbook 'apache2', '~> 1.2.3'

Или:

cookbook 'runit', '= 4.2.0'

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

Замораживание версий

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

Например, для заморозки версии кулинарной книги с помощью knife введите:

knife cookbook upload redis --freeze

Результат:

Uploading redis...
Upload completed

После заморозки версии кулинарной книги, обновление возможно только с использованием параметра --force. Например:

knife cookbook upload redis --force

Без указания параметра --force будет возвращена ошибка, похожая на:

Version 0.0.0 of cookbook redis is frozen. Use --force to override

Управление версиями с помощью системы контроля версий

При использовании системы контроля версий следует рассмотреть две стратегии:

  • Использование максимального контроля версий, когда важно хранить все данные в системе контроля версий
  • Использование отслеживания ветвей, когда кулинарные книги управляются в отдельных средах с помощью ветвей git, а политика версионирования уже хранится в метаданных кулинарной книги.

Отслеживание ветвей

Использование стратегии отслеживания ветвей требует, чтобы для каждой среды существовала ветвь в системе контроля версий и чтобы политика версионирования каждой кулинарной книги отслеживалась на уровне ветви. Этот подход относительно прост и легок: для сред разработки, которые отслеживают последние кулинарные книги, достаточно просто изменить версию перед загрузкой кулинарной книги для тестирования. Для кулинарных книг, которые требуют более высокого уровня контроля версий, knife позволяет загружать кулинарные книги в определённые среды и замораживать кулинарные книги (что предотвращает возможность внесения изменений в эту кулинарную книгу).

Типичный рабочий процесс со стратегией отслеживания ветвей включает:

  1. Изменение номера версии по мере необходимости.
  2. Внесение изменений в кулинарную книгу.
  3. Загрузка и тестирование кулинарной книги.
  4. Перенос протестированной кулинарной книги в рабочую среду.

Например, для изменения номера версии сначала внесите изменения в кулинарную книгу, а затем загрузите и протестируйте её. Повторяйте этот процесс по мере необходимости, а затем загрузите её с помощью команды knife, аналогичной:

knife cookbook upload my-app

Когда кулинарная книга готова, перенесите эти изменения в рабочую среду и используйте параметр --freeze для предотвращения внесения других изменений:

knife cookbook upload  my-app -E production --freeze

Максимальные версии

Использование стратегии максимального контроля версий требуется, когда все необходимо отслеживать в системе контроля версий. Этот подход очень похож на стратегию отслеживания ветвей во время разработки и тестирования кулинарной книги, но является более сложным и трудоёмким (и требует редактирования файлов для данных среды) для развертывания кулинарной книги в рабочей среде.

Типичный рабочий процесс со стратегией максимального контроля версий включает:

  1. Изменение номера версии по мере необходимости.
  2. Внесение изменений в кулинарную книгу.
  3. Загрузка и тестирование кулинарной книги.
  4. Перенос протестированной кулинарной книги в рабочую среду.

Например, для изменения номера версии сначала внесите изменения в кулинарную книгу, а затем загрузите и протестируйте её. Повторяйте этот процесс по мере необходимости, а затем загрузите её с помощью команды knife, аналогичной:

knife cookbook upload my-app

Когда кулинарная книга готова, перенесите эти изменения в рабочую среду и используйте параметр --freeze для предотвращения внесения других изменений:

knife cookbook upload  my-app -E production --freeze

Затем измените среду так, чтобы она отдавала предпочтение только что загруженной версии:

(vim|emacs|mate|ed) YOUR_REPO/environments/production.rb

Загрузите обновлённую среду:

knife environment from file production.rb

И затем разверните новую версию кулинарной книги.

© 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/cookbook_versioning/

Spec-Zone.ru

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