Spec-Zone.ru › Chef 18

Ресурс apt_package

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

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


Используйте ресурс apt_package для управления пакетами на платформах Debian, Ubuntu и других платформах, использующих систему пакетов APT.

Примечание

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

Синтаксис


Блок ресурса apt_package управляет пакетом на узле, обычно устанавливая его. Наиболее простой способ использования ресурса apt_package: apt_package 'package_name' , что установит указанный пакет с использованием всех параметров по умолчанию и стандартным действием :install.

Полный синтаксис всех свойств ресурса apt_package:

apt_package 'name' do
  default_release              String
  options                      String, Array
  overwrite_config_files       true, false # default value: false
  package_name                 String, Array
  response_file                String
  response_file_variables      Hash # default value: {}
  timeout                      String, Integer
  version                      String, Array
  action                       Symbol # defaults to :install if not specified
end

где:

  • apt_package — это ресурс.
  • name — имя, присвоенное блоку ресурса.
  • action определяет шаги, которые Chef Infra Client предпримет для приведения узла в желаемое состояние.
  • default_release, options, overwrite_config_files, package_name, response_file, response_file_variables, timeout, и version — доступные свойства этого ресурса.

Действия


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

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

Свойства


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

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

Версия по умолчанию. Например: stable.

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

Дополнительные параметры, передаваемые команде. Например, стандартные директивы apt-get, такие как --no-install-recommends. См. страницу справки apt-get для полного списка.

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

Перезаписать существующие конфигурационные файлы файлами, предоставленными пакетом, если об этом попросит APT.

Новое свойство в Chef Client 14.0

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

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

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

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

response_file_variables
Тип 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]', действие :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.

Примеры


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

Установка пакета с помощью менеджера пакетов:

apt_package 'name of package' do
  action :install
end

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

apt_package 'name of package'

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

apt_package %w(package1 package2 package3)

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

package 'apache2' do
  options '--no-install-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/apt_package/

Spec-Zone.ru

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