Spec-Zone.ru › Chef 16

Ресурс zypper_package

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

Страница справочника по ресурсам


Используйте ресурс zypper_package для установки, обновления и удаления пакетов с помощью Zypper для платформ SUSE Enterprise и openSUSE.

Примечание

Во многих случаях лучше использовать ресурс package вместо этого. Это связано с тем, что при использовании ресурса package в рецепте, клиент Chef Infra Client будет использовать данные, собранные Ohai в начале выполнения клиента Chef Infra Client, чтобы определить правильное приложение для работы с пакетами. Использование ресурса package позволяет создавать рецепты, которые можно использовать на многих платформах.

Синтаксис


Полный синтаксис для всех свойств, доступных ресурсу 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
Ресурс zypper_package
  • Синтаксис
  • Действия
  • Свойства
    • Список пакетов
  • Общие функциональные возможности ресурсов
    • Общие свойства
    • Уведомления
    • Сторожа
    • Список пакетов
  • Примеры

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

Spec-Zone.ru

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