Ресурс apt_package
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменения, отредактируйте файл apt_package.rb и отправьте запрос на вытягивание в репозиторий клиента Chef Infra.
Используйте ресурс apt_package для управления пакетами в Debian, Ubuntu и других платформах, использующих систему пакетов APT.
Примечание
Синтаксис
Блок ресурса 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 предпримет, чтобы привести узел в желаемое состояние. -
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 (converge phase). ignore_failure-
Тип Ruby: true, false, :quiet | Значение по умолчанию:
falseПродолжать выполнение рецепта, если ресурс завершится неудачей по любой причине.
:quietне будет отображать полный стек отслеживания, и рецепт продолжит выполнение, если ресурс завершится неудачей. retries-
Тип Ruby: Целое число | Значение по умолчанию:
0Количество попыток перехватить исключения и повторить ресурс.
retry_delay-
Тип Ruby: Целое число | Значение по умолчанию:
2Задержка в секундах между повторными попытками.
sensitive-
Тип Ruby: true, false | Значение по умолчанию:
falseУбедитесь, что конфиденциальные данные ресурса не регистрируются клиентом Chef Infra.
Уведомления
-
notifies -
Тип Ruby: Символ, '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: Символ, '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.
Примеры
В следующих примерах показаны различные подходы к использованию ресурса 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/