Spec-Zone.ru › Chef 17

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

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

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

  • Доставка непосредственно в кулинарные книги
  • Использование встроенных ресурсов Chef Infra Client и любого дополнительного настраиваемого кода 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 Client, дополненные свойствами и определениями действий для этого настраиваемого ресурса.

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 Client, как установить Apache, запустить службу и затем создать содержимое файла по адресу /var/www/html/index.html
  • action :create — это ресурс по умолчанию (поскольку он указан первым); action :delete необходимо вызывать явно (поскольку это не действие по умолчанию)

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

Синтаксис

Вызовите ресурс в рецепте по его 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