Spec-Zone.ru › Chef 18

gem_package Ресурс

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

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


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

Примечание

Ресурс gem_package должен быть указан как gem_package и не может быть сокращён до package в рецепте.

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

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

Синтаксис


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

gem_package '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

где:

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

Действия


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

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

Свойства


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

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: Строка

Путь к двоичному файлу 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 gem. При задании строки gem будет установлен с помощью командной оболочки gem. Использование хэша параметров с явным gem_binary приведёт к неопределённому поведению.

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

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

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

Необязательно. URL или список URL, в котором находится пакет gem. Этот список добавляется к источнику, настроенному в Chef::Config[:rubygems_url] (см. также include_default_source) для построения полного списка источников rubygems. Пользователи в среде «airgapped» должны установить 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]', :action действие и :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.

Примеры


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

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

Установить файл gem из локальной файловой системы

gem_package 'loofah' do
  source '/tmp/loofah-2.7.0.gem'
  action :install
end

Использовать общее атрибут ignore_failure

gem_package 'syntax' do
  action :install
  ignore_failure true
end

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

Spec-Zone.ru

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