Spec-Zone.ru › Chef 18

Ресурс chef_gem

Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл chef_gem.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.

Все страницы ресурсов Infra


Используйте ресурс chef_gem для установки gem только для экземпляра Ruby, предназначенного для chef-клиента. Когда gem устанавливается из локального файла, его необходимо добавить на узел с помощью ресурсов remote_file или cookbook_file.

Ресурс chef_gem работает со всеми теми же свойствами и параметрами, что и ресурс gem_package, но не принимает свойство gem_binary, потому что всегда использует CurrentGemEnvironment, на котором выполняется chef-client. Кроме выполнения действий, аналогичных ресурсу gem_package, ресурс chef_gem выполняет следующее:

  • Выполняет свои действия немедленно, до сходимости, что позволяет использовать gem в рецепте сразу после установки.
  • Выполняет Gem.clear_paths после действия, гарантируя, что gem знает о изменениях, чтобы его можно было потребовать сразу после установки.

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

Ресурсы chef_gem и gem_package оба используются для установки gem Ruby. На любой машине, на которой установлен Chef Infra Client, есть два экземпляра Ruby. Один — это стандартный системный экземпляр Ruby, а другой — выделенный экземпляр, доступный только для Chef Infra Client. Используйте ресурс chef_gem для установки gem в экземпляр Ruby, выделенный для Chef Infra Client. Используйте ресурс gem_package для установки всех остальных gem (т.е. установка gem на уровне всей системы).

Синтаксис


Полный синтаксис всех свойств, доступных для ресурса chef_gem:

chef_gem 'name' do
  clear_sources               true, false
  gem_binary                  String
  include_default_source      true, false
  options                     String, Hash, Array
  package_name                String
  source                      String, Array
  timeout                     String, Integer
  version                     String
  action                      Symbol # defaults to :install if not specified
end

где:

  • chef_gem — это ресурс.
  • name — имя, данное блоку ресурса.
  • action определяет действия, которые Chef Infra Client предпримет, чтобы привести узел в нужное состояние.
  • clear_sources, gem_binary, include_default_source, options, package_name, source, timeout, и version — свойства, доступные для данного ресурса.

Действия


Ресурс chef_gem имеет следующие действия:

:install
По умолчанию. Устанавливает gem. Если указана версия, устанавливает указанную версию gem.
:nothing
Этот блок ресурса не действует, пока не получит уведомление от другого ресурса о выполнении действия. После уведомления этот блок ресурса либо выполняется немедленно, либо ставится в очередь для выполнения в конце выполнения Chef Infra Client.
:purge
Удаляет gem. Это действие обычно удаляет файлы конфигурации, а также сам gem.
:reconfig
Переконфигурирует gem. Это действие требует файла ответов.
:remove
Удаляет gem.
:upgrade
Устанавливает gem и/или гарантирует, что gem является последней версией.

Свойства


Ресурс chef_gem имеет следующие свойства:

clear_sources
Тип Ruby: true, false | Значение по умолчанию: false unless `clear_gem_sources` set to true in the `client.rb` config.

Установите в true, чтобы загрузить gem из пути, указанного свойством source (а не из RubyGems).

gem_binary
Тип Ruby: Строка | Значение по умолчанию: The `gem` binary included with Chef Infra Client.

Путь к бинарному файлу gem, используемому для установки. По умолчанию используется та же версия Ruby, что и у Chef Infra Client.

include_default_source
Тип Ruby: true, false

Установите в false, чтобы не включать Chef::Config[:rubygems_url] в источники.

Новое в Chef Client 13.0

options
Тип Ruby: Строка, Хэш, Массив

Параметры для установки gem, либо в виде Хэша, либо в виде Строки. Если передается хэш, параметры передаются в Gem::DependencyInstaller.new, и gem будет установлен через API gems. Если передается строка, gem будет установлен с помощью вызова команды gem. Использование хэша параметров с явным gem_binary приведет к неопределенному поведению.

package_name
Тип Ruby: Строка

Необязательное свойство для установки имени пакета, если оно отличается от имени блока ресурса.

source
Тип Ruby: Строка, Массив

Необязательно. URL или список URL, по которым находится пакет gem. Этот список добавляется к источнику, настроенному в Chef::Config[:rubygems_url] (см. также include_default_source) для построения полного списка источников rubygems. Пользователи в «отключенном» окружении должны установить Chef::Config[:rubygems_url] в свой локальный зеркало RubyGems.

timeout
Тип Ruby: Строка, Целое число

Время ожидания в секундах перед истечением таймаута.

version
Тип Ruby: Строка

Версия пакета, который необходимо установить или обновить.


Общие функции ресурсов


Ресурсы Chef включают общие свойства, уведомления и защитные механизмы ресурсов.

Общие свойства

Следующие свойства являются общими для всех ресурсов:

compile_time

Тип Ruby: true, false | Значение по умолчанию: false

Управляет фазой, в которой ресурс выполняется на узле. Установите в true, чтобы запустить во время построения коллекции ресурсов (compile phase). Установите в false, чтобы запустить во время конфигурации узла Chef Infra Client (converge phase).

ignore_failure

Тип Ruby: true, false, :quiet | Значение по умолчанию: false

Продолжать выполнение рецепта, если ресурс завершится неудачно по какой-либо причине. :quiet не будет отображать полный стек вызовов, и рецепт продолжит работу, если ресурс завершится неудачно.

retries

Тип Ruby: Целое число | Значение по умолчанию: 0

Количество попыток перехватить исключения и повторить ресурс.

retry_delay

Тип Ruby: Целое число | Значение по умолчанию: 2

Задержка в секундах между попытками повтора.

sensitive

Тип Ruby: true, false | Значение по умолчанию: false

Убедиться, что конфиденциальные данные ресурса не регистрируются Chef Infra Client.

Уведомления

notifies

Тип Ruby: Символ, 'Chef::Resource[Строка]'

Ресурс может уведомлять другой ресурс о выполнении действия при изменении его состояния. Укажите 'resource[name]', действие, которое должен выполнить :action, а затем :timer для этого действия. Ресурс может уведомлять несколько ресурсов; используйте выражение notifies для каждого уведомляемого ресурса.

Если указанный ресурс не существует, генерируется ошибка. В отличие от этого, subscribes не завершится ошибкой, если исходный ресурс не найден.

Таймер определяет момент во время выполнения Chef Infra Client, в который выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

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

:immediate, :immediately

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

Синтаксис для notifies:

notifies :action, 'resource[name]', :timer
subscribes

Тип Ruby: Символ, 'Chef::Resource[Строка]'

Ресурс может следить за другим ресурсом и выполнять действие, если состояние отслеживаемого ресурса изменяется. Укажите 'resource[name]', действие, которое должно быть выполнено, а затем :timer для этого действия.

Обратите внимание, что subscribes не применяет указанное действие к ресурсу, за которым он следит — например:

file '/etc/nginx/ssl/example.crt' do
  mode '0600'
  owner 'root'
end

service 'nginx' do
  subscribes :reload, 'file[/etc/nginx/ssl/example.crt]', :immediately
end

В этом случае свойство subscribes перезагружает службу nginx всякий раз, когда обновляется файл сертификата, расположенный по адресу /etc/nginx/ssl/example.crt. subscribes не вносит никаких изменений в сам файл сертификата, он просто отслеживает изменения в файле и выполняет действие :reload для своего ресурса (в этом примере nginx) при обнаружении изменения.

Если другой ресурс не существует, подписка не генерирует ошибку. В отличие от этого, более строгие семантика notifies приведет к ошибке, если другой ресурс не существует.

Таймер определяет момент во время выполнения Chef Infra Client, в который выполняется уведомление. Доступны следующие таймеры:

:before

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

:delayed

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

:immediate, :immediately

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

Синтаксис для subscribes:

subscribes :action, 'resource[name]', :timer

Защитные механизмы

Свойство-сторож может использоваться для оценки состояния узла во время выполнения Chef Infra Client. Основываясь на результатах этой оценки, свойство-сторож используется для указания Chef Infra Client, продолжать ли выполнение ресурса. Свойство-сторож принимает либо строковое значение, либо значение Ruby-блока:

  • Строка выполняется как командная оболочка. Если команда возвращает 0, сторож применяется. Если команда возвращает любое другое значение, то свойство-сторож не применяется. Строковые сторожа в powershell_script выполняют команды Windows PowerShell и могут возвращать true в дополнение к 0.
  • Блок выполняется как код Ruby, который должен возвращать либо true или false. Если блок возвращает true, свойство-сторож применяется. Если блок возвращает false, свойство-сторож не применяется.

Свойство-сторож полезно для обеспечения идемпотентности ресурса, позволяя этому ресурсу проверять желаемое состояние по мере выполнения, а затем, если желаемое состояние присутствует, Chef Infra Client ничего не делает.

Свойства

Следующие свойства могут быть использованы для определения сторожа, который оценивается во время выполнения Chef Infra Client:

not_if

Запретить выполнение ресурса, когда условие возвращает true.

only_if

Разрешить выполнение ресурса только если условие возвращает true.

Примеры


Следующие примеры демонстрируют различные подходы к использованию ресурса chef_gem в рецептах:

Установка gem во время компиляции и слияния

Для установки gem во время конфигурации узла Chef Infra Client (фаза слияния), установите свойство compile_time в false:

chef_gem 'loofah' do
  compile_time false
  action :install
end

Для установки gem во время построения коллекции ресурсов (фаза компиляции), установите свойство compile_time в true:

chef_gem 'loofah' do
  compile_time true
  action :install
end

Установка gem MySQL в Chef Infra Client*

apt_update

build_essential 'install compilation tools' do
  compile_time true
end

chef_gem 'mysql'

© 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/resources/chef_gem/

Spec-Zone.ru

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