Spec-Zone.ru › Chef 17

metadata.rb

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

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

Файл metadata.rb:

  • Расположен на верхнем уровне структуры каталогов кулинарного рецепта.
  • Компилируется всякий раз, когда кулинарный рецепт загружается на сервер Chef Infra или когда запускается подкоманда knife cookbook metadata, а затем хранится в формате JSON.
  • Создаётся автоматически командой knife при запуске подкоманды knife cookbook create.
  • Редактируется с помощью текстового редактора, а затем повторно загружается на сервер Chef Infra в рамках загрузки кулинарного рецепта.
  • Расположен на верхнем уровне структуры каталогов кулинарного рецепта.
  • Компилируется всякий раз, когда кулинарный рецепт загружается на сервер Chef Infra или когда запускается подкоманда knife cookbook metadata, а затем хранится в формате JSON.
  • Создаётся автоматически командой knife при запуске подкоманды knife cookbook create.
  • Редактируется с помощью текстового редактора, а затем повторно загружается на сервер Chef Infra в рамках загрузки кулинарного рецепта.

Сообщения об ошибках

Сервер Chef Infra будет пытаться распространить только те кулинарные рецепты, которые необходимы для настройки отдельного узла. Это определяется путем идентификации ролей и рецептов, которые напрямую назначены этой системе, а затем расширения списка зависимостей и последующей передачи всего набора на узел. В некоторых случаях, если зависимость не указана в метаданных кулинарного рецепта, сервер Chef Infra может не рассматривать эту зависимость как требование, что приведёт к сообщению об ошибке. Если от сервера Chef Infra получено сообщение об ошибке относительно распространения кулинарного рецепта, проверьте записи depends в файле metadata.rb и повторите попытку.

Примечание

Файл metadata.json можно редактировать напрямую, если требуется внести временные изменения. Любая последующая загрузка или действие, которое генерирует метаданные, приведет к перезаписи существующего файла metadata.json новым набором метаданных. Поэтому все постоянные изменения метаданных кулинарного рецепта должны выполняться в файле metadata.rb и затем повторно загружаться на сервер Chef Infra.

Ограничения версий

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

Спецификация Оператор
Пессимистическое (см. примечание ниже) ~>
Равно =
Больше или равно >=
Больше >
Меньше <
Меньше или равно <=

Примечание

Пессимистическая блокировка активируется при правильном семантическом управлении версиями кулинарных рецептов. Если мы используем версию 2.2.3 кулинарного рецепта, мы знаем, что API будет стабильным до выпуска версии 3.0.0. С использованием традиционных операторов это записывается как >= 2.2.0, < 3.0. Вместо этого мы можем записать это, объединив тильду «~» и знак больше «>» (часто называемый тильда-ракетой или «твидл-ваккой») и последующие номер главной и вспомогательной версии. Например: ~> 2.2

Настройки

В этом файле конфигурации есть следующие настройки:

chef_version

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

Например, чтобы соответствовать любой версии 16.x Chef Client, но не 15.x или 17.x:

chef_version '~> 16.0'

Более сложный пример, где вы устанавливаете как нижнюю, так и верхнюю границу версии Chef Infra Client:

chef_version '>= 17.2', '< 17.4'
depends

Это поле требует наличия кулинарного рецепта с соответствующим именем и версией на сервере Chef Infra. При совпадении сервер Chef Infra включает зависимость в набор кулинарных рецептов, которые отправляются на узел во время выполнения Chef Infra Client. Очень важно, чтобы поле depends содержало точные данные. Если инструкция зависимости неточная, Chef Infra Client может не завершить настройку системы. Все операторы ограничений версий применимы к этому полю.

Например, чтобы установить зависимость от кулинарного рецепта под названием cats:

depends 'cats'

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

depends 'cats', '< 1.0'
description

Краткое описание кулинарного рецепта и его функциональности.

Например:

description 'A fancy cookbook that manages a herd of cats!'
gem

Указывает зависимость gem для установки в Chef Infra Client через bundler. Установка gem происходит после синхронизации всех кулинарных рецептов, но перед загрузкой других кулинарных рецептов. Используйте этот атрибут один раз для каждой зависимости gem. Например:

gem 'loofah'
gem 'chef-sugar'

Предупреждение

Используйте настройку gem только для доступа к внешним библиотекам chef, поставляемым в виде gem, в выполнении Chef Infra Client для библиотек и файлов атрибутов. Настройка gem в metadata.rb позволяет устанавливать этот конкретный тип gem на ранней стадии, с основным ограничением, что он не может устанавливать нативные gem.

Не устанавливайте нативные gem с помощью настройки gem в metadata.rb . Настройка gem не является универсальной заменой ресурса chef_gem и не использует ресурс chef_gem внутри. Нативные gem требуют компиляции с C и не должны устанавливаться с помощью metadata.rb , потому что metadata.rb выполняется до запуска любого кода рецепта. Следовательно, Chef Infra Client не может установить компиляторы C перед установкой gem. Вместо этого устанавливайте нативные gem с помощью ресурса chef_gem , вызываемого из кода рецепта. Также вам потребуется использовать ресурс build_essential в коде рецепта для установки необходимых компиляторов на систему.

Чистые ruby gem также можно установить с помощью metadata.rb.

issues_url

URL местоположения, в котором ведется отслеживание проблем для кулинарного рецепта. Эта настройка также используется Chef Supermarket. В Chef Supermarket это значение используется для определения пункта назначения для ссылки «Просмотр проблем».

Например:

issues_url 'https://github.com/chef-cookbooks/chef-client/issues'
license

Тип лицензии, по которой распространяется кулинарный рецепт: Apache v2.0, GPL v2, GPL v3, MIT, или license 'Proprietary - All Rights Reserved (по умолчанию). Обратите внимание на лицензии для файлов внутри кулинарного рецепта и обязательно следуйте любым ограничениям, которые они описывают.

Например:

license 'Apache-2.0'

или:

license 'GPL-3.0'

или:

license 'MIT'

или:

license 'Proprietary - All Rights Reserved'
maintainer

Имя лица, ответственного за поддержку кулинарного рецепта, либо физического лица, либо организации.

Например:

maintainer 'Bob Bobberson'
maintainer_email

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

Например:

maintainer_email 'bob@example.com'
name

Обязательное поле. Название кулинарного рецепта.

Например:

name 'cats'
ohai_version

Диапазон версий Ohai, поддерживаемых этим кулинарным рецептом. Все операторы ограничений версий применимы к этому полю.

Например, чтобы соответствовать любой версии 8.x Ohai, но не 7.x или 9.x:

ohai_version '~> 8'

Примечание

Эта настройка не отображается в Chef Supermarket.
privacy

Указать кулинарный рецепт как закрытый.

Например:

privacy true
source_url

URL местоположения, в котором хранится исходный код кулинарного рецепта. Эта настройка также используется Chef Supermarket. В Chef Supermarket это значение используется для определения пункта назначения для ссылки «Просмотреть исходный код».

Например:

source_url 'https://github.com/chef-cookbooks/chef-client'
supports

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

Например, чтобы поддержать все версии Ubuntu:

supports 'ubuntu'

или, чтобы поддержать версии Ubuntu, большие или равные 20.04:

supports 'ubuntu', '>= 20.04'

или, чтобы поддержать только Ubuntu 20.04:

supports 'ubuntu', '= 20.04'

Вот список всех поддерживаемых конкретных операционных систем:

%w( aix amazon centos fedora freebsd debian oracle mac_os_x redhat suse opensuseleap ubuntu windowszlinux ).each do |os|
  supports os
end
version

Текущая версия кулинарного рецепта. Номера версий всегда следуют простому трёхзначному числовому порядку.

Например:

version '2.0.0'

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

Spec-Zone.ru

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