Ресурс apt_package
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл apt_package.rb и отправьте запрос на вытягивание в репозиторий Chef.
Используйте ресурс apt_package для управления пакетами на платформах Debian и Ubuntu.
Примечание
Синтаксис
Блок ресурса 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
© 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/