Учебники

Шеф-повар — Ресурсы

Ресурс Chef представляет собой часть операционной системы в желаемом состоянии. Это заявление о политике конфигурации, которое описывает желаемое состояние узла, для которого требуется перенести текущую конфигурацию с использованием поставщиков ресурсов. Это помогает узнать текущее состояние целевой машины, используя механизм Ohai от Chef. Это также помогает определить шаги, необходимые для перевода целевого компьютера в это состояние. Ресурсы сгруппированы по рецептам, которые описывают рабочую конфигурацию.

В случае Chef chef :: Platform отображает провайдеров и версии платформ каждого узла. В начале каждого запуска Chef-клиента сервер Chef собирает информацию о текущем состоянии всех машин. Позже сервер Chef использует эти значения для определения правильного поставщика.

Синтаксис ресурса

type 'name' do 
   attribute 'value' 
   action :type_of_action 
end

В приведенном выше синтаксисе «тип» — это тип ресурса, а «имя» — это имя, которое мы будем использовать. В блоках «do» и «end» у нас есть атрибут этого ресурса и действие, которое нам нужно предпринять для этого конкретного ресурса.

Каждый ресурс, который мы используем в рецепте, имеет свой собственный набор действий, который определяется внутри блоков «do» и «end».

пример

type 'name' do 
   attribute 'value' 
   action :type_of_action 
end 

Все ресурсы имеют общий набор функций, действий, свойств, условного выполнения, уведомлений и соответствующего пути действий.

действия Действие : nothing можно использовать с любым ресурсом или пользовательским ресурсом.
свойства Свойства ignore_failure, provider, retries, retry_delay и Support могут использоваться с любым ресурсом или пользовательскими ресурсами.
гвардия Условные исполнения not_if и only_if можно использовать для установки дополнительных средств защиты определенных ресурсов, чтобы они запускались только при выполнении условия.
Переводчики гвардии Оценивает строковую команду, используя основанный на сценариях ресурс: bash, csh, perl, powershell_script, python или ruby .
Уведомления Уведомления и подписки могут быть использованы с любым ресурсом.
Относительные пути Относительный путь # {ENV [‘HOME’]} можно использовать с любым ресурсом.
Безопасность файлов Windows Ресурсы template, file, remote_file, cookbook_file, directory и remote_directory поддерживают использование списков наследования и контроля доступа (ACL) в рецептах.
Запустить в фазе компиляции Иногда ресурс необходимо запустить перед каждым другим ресурсом или после добавления всех ресурсов в коллекцию ресурсов.

Доступные ресурсы

apt_package

Используйте ресурс apt_package для управления пакетами для платформ Debian и Ubuntu.

удар

Используйте ресурс bash для выполнения сценариев с использованием интерпретатора Bash. Этот ресурс также может использовать любые действия и свойства, доступные для исполняемого ресурса. Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

партия

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

Этот ресурс наследует действия (: run и: nothing) и свойства (create, cwd, environment, group, path, timeout и user) от ресурса execute . Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

bff_package

Используйте ресурс bff_package для управления пакетами для платформы AIX с помощью утилиты installp . Когда пакет устанавливается из локального файла, он должен быть добавлен к узлу с использованием ресурсов remote_file или cookbook_file .

chef_gem

Используйте ресурс chef_gem, чтобы установить гем только для экземпляра Ruby, выделенного для Chef-Client. Когда гем устанавливается из локального файла, он должен быть добавлен к узлу с использованием ресурсов remote_file или cookbook_file .

Ресурс chef_gem работает со всеми теми же свойствами и опциями, что и ресурс gem_package , но не принимает свойство gem_binary, поскольку он всегда использует CurrentGemEnvironment, в котором работает Chef-Client. В дополнение к выполнению действий, аналогичных ресурсу gem_package, ресурс chef_gem выполняет вышеуказанное.

cookbook_file

Используйте ресурс cookbook_file для передачи файлов из подкаталога COOKBOOK_NAME / files / по указанному пути, расположенному на хосте, на котором работает ChefClient.

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

Cron

Используйте ресурс cron для управления записями cron для планирования заданий на основе времени. Свойства для расписания по умолчанию будут *, если не предоставлены. Ресурсу cron требуется доступ к программе crontab, обычно cron.

Csh

Используйте ресурс csh для выполнения сценариев с использованием интерпретатора csh. Этот ресурс также может использовать любые действия и свойства, доступные для исполняемого ресурса.

Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

развертывание

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

каталог

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

Ресурс каталога использует свойство name для указания пути к местоположению в каталоге. Как правило, разрешение на доступ к этому расположению в каталоге не требуется.

dpkg_package

Используйте ресурс dpkg_package для управления пакетами для платформы dpkg . Когда пакет устанавливается из локального файла, он должен быть добавлен к узлу с использованием ресурсов remote_file или cookbook_file .

easy_install_package

Используйте ресурс easy_install_package для управления пакетами для платформы Python.

Env

Используйте ресурс env для управления ключами среды в Microsoft Windows. После установки ключа среды Microsoft Windows необходимо перезапустить, прежде чем ключ среды станет доступен планировщику задач.

erl_call

Используйте ресурс erl_call для подключения к узлу, расположенному в распределенной системе Erlang. Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

казнить

Используйте ресурс execute для выполнения одной команды. Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

файл

Используйте файловый ресурс для управления файлами непосредственно на узле.

freebsd_package

Используйте ресурс freebsd_package для управления пакетами для платформы FreeBSD.

gem_package

Используйте ресурс gem_package для управления пакетами gem, которые включены только в рецепты. Когда пакет устанавливается из локального файла, он должен быть добавлен к узлу с использованием ресурсов remote_file или cookbook_file .

Гит

Используйте ресурс git для управления ресурсами управления исходным кодом, которые существуют в репозитории git. git версии 1.6.5 (или выше) требуется для использования всех функций в ресурсе git.

группа

Используйте групповой ресурс для управления локальной группой.

homebrew_package

Используйте ресурс homebrew_package для управления пакетами для платформы Mac OS X.

http_request

Используйте ресурс http_request для отправки HTTP-запроса (GET, PUT, POST, DELETE, HEAD или OPTIONS) с произвольным сообщением. Этот ресурс часто полезен, когда необходимы пользовательские обратные вызовы.

Ifconfig

Используйте ресурс ifconfig для управления интерфейсами.

ips_package

Используйте ресурс ips_package для управления пакетами (с использованием Image Packaging System (IPS)) на платформе Solaris 11.

Ksh

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

Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

Ссылка на сайт

Используйте ресурс ссылок для создания символических или жестких ссылок.

Журнал

Используйте ресурс журнала для создания записей журнала. Ресурс журнала ведет себя как любой другой ресурс: встроен в коллекцию ресурсов на этапе компиляции, а затем запускается на этапе выполнения. (Чтобы создать запись журнала, которая не встроена в коллекцию ресурсов, используйте Chef :: Log вместо ресурса журнала)

macports_package

Используйте ресурс macports_package для управления пакетами для платформы Mac OS X.

Mdadm

Используйте ресурс mdadm для управления устройствами RAID в среде Linux с помощью утилиты mdadm. Поставщик mdadm создаст и соберет массив, но не создаст файл конфигурации, который используется для сохранения массива при перезагрузке.

Если требуется файл конфигурации, это необходимо сделать, указав шаблон с правильной компоновкой массива, а затем с помощью поставщика монтирования создать запись таблицы файловых систем (fstab).

гора

Используйте ресурс монтирования для управления смонтированной файловой системой.

Ohai

Используйте ресурс ohai для перезагрузки конфигурации Ohai на узле. Это позволяет рецептам, которые изменяют системные атрибуты (например, рецепт, добавляющий пользователя), ссылаться на эти атрибуты позже во время выполнения программы chef-client.

пакет

Используйте ресурс пакета для управления пакетами. Когда пакет устанавливается из локального файла (например, с помощью RubyGems, dpkg или RPM Package Manager), этот файл должен быть добавлен в узел с использованием ресурсов remote_file или cookbook_file.

pacman_package

Используйте ресурс pacman_package для управления пакетами (используя pacman) на платформе Arch Linux.

powershell_script

Используйте ресурс powershell_script для выполнения сценария с использованием интерпретатора Windows PowerShell, во многом аналогично тому, как используются сценарии и ресурсы на основе сценариев — bash, csh, perl, python и ruby. Сценарий powershell_script специфичен для платформы Microsoft Windows и интерпретатора Windows PowerShell.

питон

Используйте ресурс python для выполнения скриптов с использованием интерпретатора Python. Этот ресурс также может использовать любые действия и свойства, доступные для исполняемого ресурса.

Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

перезагружать

Используйте ресурс перезагрузки, чтобы перезагрузить узел, необходимый шаг для некоторых установок на определенных платформах. Этот ресурс поддерживается для использования на платформах Microsoft Windows, Mac OS X и Linux.

registry_key

Используйте ресурс registry_key для создания и удаления разделов реестра в Microsoft Windows.

remote_directory

Используйте ресурс remote_directory для постепенной передачи каталога из кулинарной книги в узел. Каталог, скопированный из кулинарной книги, должен быть расположен в COOKBOOK_NAME / files / default / REMOTE_DIRECTORY.

Ресурс remote_directory будет соответствовать специфике файла.

remote_file

Используйте ресурс remote_file для передачи файла из удаленного местоположения, используя специфичность файла. Этот ресурс похож на файловый ресурс.

маршрут

Используйте ресурс маршрута для управления таблицей системной маршрутизации в среде Linux.

rpm_package

Используйте ресурс rpm_package для управления пакетами для платформы RPM Package Manager.

Рубин

Используйте ресурс ruby для выполнения скриптов с использованием интерпретатора Ruby. Этот ресурс также может использовать любые действия и свойства, доступные для исполняемого ресурса.

Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

ruby_block

Используйте ресурс ruby_block для выполнения кода Ruby во время запуска Chef-Client. Код Ruby в ресурсе ruby_block оценивается с другими ресурсами во время конвергенции, тогда как код Ruby вне ресурса ruby_block оценивается перед другими ресурсами, так как рецепт компилируется.

скрипт

Используйте ресурс сценария для выполнения сценариев с использованием указанного интерпретатора, такого как Bash, csh, Perl, Python или Ruby. Этот ресурс также может использовать любые действия и свойства, доступные для исполняемого ресурса.

Команды, которые выполняются с этим ресурсом, (по своей природе) не являются идемпотентными, поскольку они, как правило, уникальны для среды, в которой они выполняются. Используйте not_if и only_if для защиты этого ресурса от идемпотентности.

обслуживание

Используйте ресурс сервиса для управления сервисом.

smart_os_package

Используйте ресурс smartos_package для управления пакетами для платформы SmartOS.

solaris_package

Ресурс solaris_package используется для управления пакетами для платформы Solaris.

диверсия

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

шаблон

Используйте ресурс шаблона для управления содержимым файла с помощью шаблона Embedded Ruby (ERB) путем передачи файлов из подкаталога COOKBOOK_NAME / templates / по указанному пути, расположенному на хосте, на котором работает Chef-Client. Этот ресурс включает в себя действия и свойства из файлового ресурса. Файлы шаблонов, управляемые ресурсом шаблона, следуют тем же правилам специфичности файлов, что и remote_file и файловые ресурсы.

пользователь

Используйте пользовательский ресурс для добавления пользователей, обновления существующих пользователей, удаления пользователей, а также для блокировки / разблокировки паролей пользователей.

windows_package

Используйте ресурс windows_package для управления пакетами Microsoft Installer Package (MSI) для платформы Microsoft Windows.

windows_service

Используйте ресурс windows_service для управления службой на платформе Microsoft Windows.

yum_package

Используйте ресурс yum_package для установки, обновления и удаления пакетов с Yum для платформ Red Hat и CentOS. Ресурс yum_package может разрешать данные, предоставленные для пакетов, так же, как это делает Yum при запуске из командной строки. Это позволяет использовать различные варианты установки пакетов, например минимальные версии, виртуальные пакеты и имена библиотек.