Spec-Zone.ru › Chef 16

Ресурс apt_package

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

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


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

Примечание

Во многих случаях лучше использовать ресурс 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
  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 InfraClient.

Уведомления

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.

Примеры


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

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

apt_package 'name of package' do
  action :install
end

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

apt_package 'name of package'

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

apt_package %(package1 package2 package3)

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

package 'apache2' do
  options '--no-install-recommends'
end
Ресурс apt_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/apt_package/

Spec-Zone.ru

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