Ресурс 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 при запуске из командной строки. Это позволяет использовать различные варианты установки пакетов, например минимальные версии, виртуальные пакеты и имена библиотек.