Spec-Zone.ru › Chef 18

Руководство по настраиваемым ресурсам

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

Клиент Chef Infra поставляется с более чем 150 встроенными ресурсами для управления конфигурацией системы, такими как directory, remote_file и windows_firewall. С помощью настраиваемых ресурсов вы можете расширить встроенные возможности клиента Chef Infra, создав переиспользуемые ресурсы для использования в любой точке вашей инфраструктуры.

  • Доставка непосредственно в кулинарии
  • Использование встроенных ресурсов клиента Chef Infra и любого дополнительного пользовательского кода Ruby (при необходимости)
  • Ведение себя так же, как и существующие встроенные ресурсы в ваших рецептах

Синтаксис

Макет настраиваемого ресурса:

provides :resource_name

property :property_name, RubyType, default: 'value'

action :action_a do
 # a mix of built-in Chef Infra resources and Ruby
end

action :action_b do
 # a mix of built-in Chef Infra resources and Ruby
end

Первое указанное действие — это действие по умолчанию.

Создание настраиваемого ресурса

Вы напишете код для настраиваемого ресурса в файле Ruby и расположите его в каталоге /resources кулинарии (сначала нужно сгенерировать ресурс). Этот код:

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

Генерация настраиваемого ресурса

Каталог resources по умолчанию в кулинарии не существует. Сгенерируйте каталог resources и файл ресурса из каталога chef-repo/cookbooks с помощью команды:

chef generate resource PATH_TO_COOKBOOK RESOURCE_NAME

Например, эта команда генерирует ресурс site в кулинарии custom_web:

chef generate resource cookbooks/custom_web site

Каталог кулинарии custom_web с настраиваемым ресурсом имеет следующую структуру:

├ cookbooks
 ├ custom_web
   ├ .delivery
   | └ project.toml
   ├ recipes
   | └ default.rb
   ├ resources
   | └ site.rb
   ├ test
   | └ integration
   | | └ default
   | | | └ default_test.rb
   ├ .gitignore
   ├ CHANGELOG.md
   ├ chefignore
   ├ kitchen.yml
   ├ LICENSE
   ├ metadata.rb
   ├ Policyfile.rb
   └ README.md

Пример ресурса

Этот пример site использует встроенные ресурсы Chef Infra: file, service и package, и включает действия :create и :delete. Он также предполагает существование пользовательского шаблона httpd. Код в этом настраиваемом ресурсе аналогичен типичному рецепту, поскольку он использует встроенные ресурсы клиента Chef Infra, с добавлением определения свойств и действий для этого настраиваемого ресурса.

provides :site

property :homepage, String, default: '<h1>Hello world!</h1>'

action :create do
  package 'httpd'

  service 'httpd' do
    action [:enable, :start]
  end

  file '/var/www/html/index.html' do
    content new_resource.homepage
  end
end

action :delete do
  package 'httpd' do
    action :remove
  end

  file '/var/www/html/index.html' do
    action :delete
  end
end

где

  • site — имя настраиваемого ресурса. Оператор provides делает настраиваемый ресурс доступным для использования в рецептах.
  • homepage устанавливает значение по умолчанию HTML для файла index.html со значением по умолчанию '<h1>Hello world!</h1>'.
  • блок action использует встроенный набор ресурсов, чтобы сообщить клиенту Chef Infra, как установить Apache, запустить службу и создать содержимое файла, расположенного по адресу /var/www/html/index.html
  • action :create — это ресурс по умолчанию (поскольку он указан первым); action :delete должен быть вызван явно (поскольку это не действие по умолчанию)

После написания вы можете использовать настраиваемый ресурс в рецепте с тем же синтаксисом, что и встроенные ресурсы клиента Chef Infra.

Синтаксис

Вызов ресурса в рецепте по его resource_name. Например:

Дополнительная информация

Ознакомьтесь с интерактивным руководством по Chef: Расширение Chef Infra: Настраиваемые ресурсы

См. Словарь настраиваемых ресурсов для описания доступных методов.

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

Spec-Zone.ru

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