Spec-Zone.ru › Chef 17

Ресурс zypper_package

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

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


Используйте ресурс 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: Строка, Массив

Один (или несколько) дополнительных параметров команды, передаваемых в команду. Например, распространенные директивы zypper, такие как --no-recommends. См. страницу справки zypper для получения полного списка.

Новая возможность в Chef Client 14.6

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

Проверить подпись GPG пакета. Также может контролироваться на уровне сайта с помощью параметра конфигурации zypper_check_gpg.

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

Один (или несколько) дополнительных параметров команды, передаваемых в команду.

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

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

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

Необязательный путь к пакету на локальном файловом хранилище.

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

Количество времени (в секундах) ожидания перед завершением таймаута.

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

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

Свойства для нескольких пакетов

Ресурс может указать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов 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: Целое число | Значение по умолчанию: 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.

Множественные пакеты

Ресурс может указать несколько пакетов и/или версий для платформ, которые используют менеджеры пакетов 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/

Spec-Zone.ru

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