Ресурс zypper_package
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл zypper_package.rb и отправьте запрос на внесение изменений в репозиторий Chef.
Страница справочника по ресурсам
Используйте ресурс zypper_package для установки, обновления и удаления пакетов с помощью Zypper для платформ SUSE Enterprise и openSUSE.
Примечание
Синтаксис
Полный синтаксис для всех свойств, доступных ресурсу zypper_package, следующий:
zypper_package 'name' do
allow_downgrade true, false # default value: true
global_options String, Array
gpg_check true, false # default value: "true"
options String, Array
package_name String, Array
source String
timeout String, Integer
version String, Array
action Symbol # defaults to :install if not specified
endгде:
-
zypper_package— это ресурс. -
name— это имя, присвоенное блоку ресурса. -
actionопределяет, какие шаги предпримет клиент Chef Infra Client, чтобы привести узел в желаемое состояние. -
allow_downgrade,global_options,gpg_check,options,package_name,source,timeoutиversion— это свойства, доступные для этого ресурса.
Действия
Ресурс zypper_package имеет следующие действия:
:install- По умолчанию. Установка пакета. Если указана версия, устанавливается указанная версия пакета.
:lock- Блокирует пакет zypper для определенной версии.
:nothing- Этот блок ресурсов не выполняет никаких действий, если не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурсов либо запускается немедленно, либо помещается в очередь для запуска в конце выполнения клиента Chef Infra Client.
:purge- Полное удаление пакета. Это действие обычно удаляет файлы конфигурации, а также сам пакет.
:reconfig- Переконфигурировать пакет. Для этого действия требуется файл ответа.
:remove- Удаление пакета.
:unlock- Разблокирует пакет zypper, чтобы его можно было обновить до более новой версии.
:upgrade- Установка пакета и/или обеспечение того, чтобы пакет был последней версии.
Свойства
Ресурс zypper_package имеет следующие свойства:
allow_downgrade-
Тип Ruby: true, false | Значение по умолчанию:
trueРазрешить понижение версии пакета для удовлетворения требований к запрашиваемой версии.
Новое в Chef Client 13.6
global_options-
Тип Ruby: String, Array
Один (или несколько) дополнительных параметров командной строки, передаваемых в команду. Например, распространенные директивы zypper, такие как
--no-recommends. Полный список см. на странице руководства zypper.Новое в Chef Client 14.6
gpg_check-
Тип Ruby: true, false | Значение по умолчанию:
trueПроверить подпись GPG пакета. Также можно управлять этим параметром на уровне всего сайта, используя параметр конфигурации
zypper_check_gpg.
options-
Тип Ruby: String, Array
Один (или несколько) дополнительных параметров командной строки, передаваемых в команду.
package_name-
Тип Ruby: String, Array
Необязательное свойство для установки имени пакета, если оно отличается от имени блока ресурса.
source-
Тип Ruby: String
Необязательный путь к пакету в локальной файловой системе.
timeout-
Тип Ruby: String, Integer
Время ожидания (в секундах) перед истечением времени ожидания.
version-
Тип Ruby: String, Array
Версия пакета, который необходимо установить или обновить.
Несколько пакетов
Ресурс может указывать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов Apt, Chocolatey, DNF, Homebrew, Pacman или Zypper. Указание нескольких пакетов и/или версий позволяет одной транзакции:
- Загрузить указанные пакеты и версии с помощью одной HTTP-транзакции
- Обновить или установить несколько пакетов с помощью одного ресурса во время выполнения клиента Chef Infra Client
Например, установка нескольких пакетов:
package %w(package1 package2)
Установка нескольких пакетов с версиями:
package %w(package1 package2) do
version [ '1.3.4-2', '4.3.6-1']
end
Обновление нескольких пакетов:
package %w(package1 package2) do
action :upgrade
end
Удаление нескольких пакетов:
package %w(package1 package2) do
action :remove
end
Полное удаление нескольких пакетов:
package %w(package1 package2) do
action :purge
end
Уведомления, через неявное имя:
package %w(package1 package2) do
action :nothing
end
log 'call a notification' do
notifies :install, 'package[package1, package2]', :immediately
end
Примечание
Уведомления и подписки не нужно обновлять при добавлении или удалении пакетов и версий из свойств package_name или version.
Общие функции ресурса
Ресурсы 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: Integer | Значение по умолчанию:
0Количество попыток перехватить исключения и повторить выполнение ресурса.
retry_delay-
Тип Ruby: Integer | Значение по умолчанию:
2Задержка повтора (в секундах).
sensitive-
Тип Ruby: true, false | Значение по умолчанию:
falseОбеспечить, чтобы конфиденциальные данные ресурса не регистрировались Chef InfraClient.
Уведомления
notifies-
Тип Ruby: Symbol, 'Chef::Resource[String]'
Ресурс может уведомлять другой ресурс о необходимости выполнить действие при изменении его состояния. Укажите
'resource[name]',:action, которое должен выполнить этот ресурс, а затем:timerдля этого действия. Ресурс может уведомлять более чем один ресурс; используйте инструкциюnotifiesдля каждого ресурса, который должен быть уведомлен.Если ссылаемый ресурс не существует, возникает ошибка. В отличие от этого,
subscribesне приведет к ошибке, если исходный ресурс не найден.
Таймер указывает точку во время выполнения клиента Chef Infra Client, в которой запускается уведомление. Доступны следующие таймеры:
:beforeУказывает, что действие с уведомленным ресурсом должно быть выполнено до обработки блока ресурса, в котором находится уведомление.
:delayedПо умолчанию. Указывает, что уведомление должно быть помещено в очередь, а затем выполнено в конце выполнения клиента Chef Infra Client.
-
:immediate,:immediately Указывает, что уведомление должно быть выполнено немедленно для каждого уведомленного ресурса.
Синтаксис для notifies следующий:
notifies :action, 'resource[name]', :timer
subscribesТип Ruby: Symbol, 'Chef::Resource[String]'
Ресурс может прослушивать другой ресурс, а затем выполнять действие, если состояние прослушиваемого ресурса изменяется. Укажите '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.
Список пакетов
Ресурс может указывать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов Apt, Chocolatey, DNF, Homebrew, Pacman или Zypper. Указание нескольких пакетов и/или версий позволяет одной транзакции:
- Загрузить указанные пакеты и версии с помощью одной HTTP-транзакции
- Обновить или установить несколько пакетов с помощью одного ресурса во время выполнения Chef Infra Client
Например, установка нескольких пакетов:
package %w(package1 package2)
Установка нескольких пакетов с версиями:
package %w(package1 package2) do
version [ '1.3.4-2', '4.3.6-1']
end
Обновление нескольких пакетов:
package %w(package1 package2) do
action :upgrade
end
Удаление нескольких пакетов:
package %w(package1 package2) do
action :remove
end
Удаление нескольких пакетов:
package %w(package1 package2) do
action :purge
end
Уведомления, через неявное имя:
package %w(package1 package2) do
action :nothing
end
log 'call a notification' do
notifies :install, 'package[package1, package2]', :immediately
end
Примечание
Уведомления и подписки не требуют обновления при добавлении или удалении пакетов и версий из свойств package_name или version.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса zypper_package в рецептах:
Установка пакета с помощью менеджера пакетов:
zypper_package 'name of package' do
action :install
end
Установка пакета с помощью локального файла:
zypper_package 'jwhois' do
action :install
source '/path/to/jwhois.rpm'
end
Установка без использования рекомендуемых пакетов как зависимости:
package 'apache2' do
options '--no-recommends'
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/zypper_package/