gem_package Ресурс
Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл gem_package.rb и отправьте запрос на включение изменений в репозиторий Chef Infra Client.
Используйте ресурс 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/