Spec-Zone.ru › Chef 16

Ресурс yum_package

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

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


Используйте ресурс yum_package для установки, обновления и удаления пакетов с помощью Yum для платформ Red Hat и CentOS. Ресурс yum_package может разрешать данные provides для пакетов так же, как это делает Yum при запуске из командной строки. Это позволяет использовать различные параметры для установки пакетов, такие как минимальные версии, виртуальные предоставления и имена библиотек.

Примечание

Поддержка использования имен файлов для установки пакетов (как в yum_package "/bin/sh") недоступна, поскольку объем данных, необходимых для их анализа, слишком велик.

Примечание

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

Синтаксис


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

yum_package 'name' do
  allow_downgrade      true, false # default value: true
  arch                 String, Array
  flush_cache          Hash # default value: {"before"=>false, "after"=>false}
  options              String, Array
  package_name         String, Array
  source               String
  timeout              String, Integer
  version              String, Array
  yum_binary           String
  action               Symbol # defaults to :install if not specified
end

где:

  • yum_package — это ресурс.
  • name — это имя, данное блоку ресурса.
  • action определяет, какие шаги предпримет клиент Chef Infra для приведения узла в желаемое состояние.
  • allow_downgrade, arch, flush_cache, options, package_name, source, timeout, version, и yum_binary — это свойства, доступные для этого ресурса.

Действия


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

:install
По умолчанию. Установить пакет. Если указана версия, установите указанную версию пакета.
:lock
Блокирует пакет yum до определенной версии.
:nothing
Этот блок ресурса не выполняет никаких действий, пока не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурса либо запускается немедленно, либо помещается в очередь для запуска в конце запуска клиента Chef Infra.
:purge
Очистить пакет. Это действие обычно удаляет файлы конфигурации, а также сам пакет.
:remove
Удалить пакет.
:unlock
Разблокирует пакет yum, чтобы его можно было обновить до более новой версии.
:upgrade
Установить пакет и/или убедиться, что пакет имеет последнюю версию. Это действие будет игнорировать атрибут version.

Свойства


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

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

Разрешить понижение версии пакета для удовлетворения требований к запрашиваемой версии.

arch
Тип Ruby: String, Array

Архитектура пакета, который нужно установить или обновить. Это значение также может быть передано как часть имени пакета.

flush_cache
Тип Ruby: Hash | Значение по умолчанию: {"before"=>false, "after"=>false}

Очистить кэш в памяти до или после операции Yum, которая устанавливает, обновляет или удаляет пакет. Принимает Hash в формате: { :before => true/false, :after => true/false } или Array в формате [ :before, :after ].

Yum автоматически синхронизирует удаленные метаданные с локальным кэшем. Клиент Chef Infra создает копию локального кэша, а затем сохраняет ее в памяти во время запуска клиента Chef Infra. Кэш в памяти позволяет устанавливать пакеты во время запуска клиента Chef Infra без необходимости продолжать синхронизацию удаленных метаданных с локальным кэшем, пока выполняется запуск клиента Chef Infra.

В виде массива:

yum_package 'some-package' do
  #...
  flush_cache [ :before ]
  #...
end

и в виде Hash:

yum_package 'some-package' do
  #...
  flush_cache( { :after => true } )
  #...
end

Примечание

Свойство flush_cache не очищает локальный кэш Yum! Используйте инструменты Yum — yum clean headers, yum clean packages, yum clean all — для очистки локального кэша Yum.

options
Тип Ruby: String, Array

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

package_name
Тип Ruby: String, Array

Один из следующих вариантов: имя пакета, имя пакета и его архитектура, имя зависимости. Значение по умолчанию: name блока ресурса. Для получения дополнительной информации см. раздел «Синтаксис» выше.

source
Тип Ruby: String

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

timeout
Тип Ruby: String, Integer

Время ожидания (в секундах) до истечения времени ожидания.

version
Тип Ruby: String, Array

Версия пакета, который нужно установить или обновить. Это свойство игнорируется при использовании действия :upgrade.

yum_binary
Тип Ruby: String

Путь к двоичному файлу yum.

Несколько пакетов

Ресурс может указывать несколько пакетов и/или версий для платформ, использующих менеджеры пакетов Apt, Chocolatey, DNF, Homebrew, Pacman или Zypper. Указание нескольких пакетов и/или версий позволяет одной транзакции:

  • Загрузить указанные пакеты и версии с помощью одной HTTP-транзакции
  • Обновить или установить несколько пакетов с помощью одного ресурса во время запуска клиента Chef Infra

Например, установка нескольких пакетов:

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 (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, когда выполняется уведомление. Доступны следующие таймеры:

:before

Указывает, что действие для уведомленного ресурса должно выполняться до обработки блока ресурса, в котором находится уведомление.

:delayed

По умолчанию. Указывает, что уведомление должно быть помещено в очередь, а затем выполнено в конце запуска клиента Chef Infra.

: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.

Примеры


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

Установка точной версии:

yum_package 'netpbm = 10.35.58-8.el8'

Установка минимальной версии:

yum_package 'netpbm >= 10.35.58-8.el8'

Установка минимальной версии с использованием действия по умолчанию:

yum_package 'netpbm'

Установка версии без учета точного выпуска:

yum_package 'netpbm-10.35*'

Установка пакета:

yum_package 'netpbm' do
  action :install
end

Установка частичной минимальной версии:

yum_package 'netpbm >= 10'

Установка пакета с определенной архитектурой:

yum_package 'netpbm' do
  arch 'i386'
end

или:

yum_package 'netpbm.x86_64'

Установка пакета с определенной версией-выпуском

yum_package 'netpbm' do
  version '10.35.58-8.el8'
end

Обработка ресурсов cookbook_file и yum_package в одном рецепте:

Когда ресурс cookbook_file и ресурс yum_package вызываются в одном рецепте, используйте атрибут flush_cache для очистки кэша Yum в памяти, а затем используйте репозиторий сразу, чтобы убедиться, что установлен правильный пакет:

cookbook_file '/etc/yum.repos.d/custom.repo' do
  source 'custom'
  mode '0755'
end

yum_package 'pkg-that-is-only-in-custom-repo' do
  action :install
  flush_cache [ :before ]
end
Ресурс yum_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/yum_package/

Spec-Zone.ru

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