Ресурс habitat_package
Эта страница сгенерирована из исходного кода Chef Infra Client. Чтобы предложить изменение, отредактируйте файл habitat_package.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.
Используйте habitat_package для установки или удаления пакетов Chef Habitat из Habitat Builder.
Новое в Chef Infra Client 17.3.
Синтаксис
Полный синтаксис всех свойств, доступных для ресурса habitat_package:
habitat_package 'name' do
auth_token String
binlink true, false, force # default value: false
bldr_url String # default value: "https://bldr.habitat.sh"
channel String # default value: "stable"
exclude String
keep_latest String
no_deps true, false # default value: false
options String
package_name String, Array
source String
timeout String, Integer
version String, Array
action Symbol # defaults to :install if not specified
endгде:
-
habitat_package— это ресурс. -
name— это имя блока ресурса. -
actionопределяет действия, которые Chef Infra Client предпримет для приведения узла в нужное состояние. -
auth_token,binlink,bldr_url,channel,exclude,keep_latest,no_deps,options,package_name,source,timeout, иversion— это свойства, доступные для этого ресурса.
Действия
Ресурс habitat_package имеет следующие действия:
:install- Установить пакет. Если версия указана, установить указанную версию пакета. (по умолчанию)
:lock:nothing- Этот блок ресурса не выполняется, пока другой ресурс не сообщит ему о необходимости выполнения действия. После уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь на выполнение в конце выполнения Chef Infra Client.
:purge- Очистить пакет. Это действие, как правило, удаляет конфигурационные файлы, а также пакет.
:reconfig:remove- Удалить пакет.
:unlock:upgrade- Установить пакет и убедиться, что пакет является последней версией.
Свойства
Ресурс habitat_package имеет следующие свойства:
-
auth_token - Тип Ruby: Строка
Токен аутентификации для установки пакета из частной организации в Habitat builder.
-
binlink - Тип Ruby: true, false, force | Значение по умолчанию:
falseЕсли habitat должен попытаться выполнить binlink пакета. Допустимые значения:
true,false,:force. Не удастся при binlinking, если установленоtrueи существует бинарный файл или binlink.
-
bldr_url - Тип Ruby: Строка | Значение по умолчанию:
https://bldr.habitat.shURL сервера habitat builder, откуда будут загружаться пакеты. По умолчанию используется общедоступный Habitat Builder
-
channel - Тип Ruby: Строка | Значение по умолчанию:
stableКанал релизов для установки вашего пакета.
-
exclude - Тип Ruby: Строка
Идентификатор одного или нескольких пакетов, которые не должны быть удалены. (например: core/redis, core/busybox-static/1.42.2/21120102031201)
-
keep_latest - Тип Ruby: Строка
Возможность удаления с сохранением указанной версии. Эта функция работает только в Habitat 1.5.86+
-
no_deps - Тип Ruby: true, false | Значение по умолчанию:
falseУдалить пакет, но сохранить зависимости.
-
options - Тип Ruby: Строка
Передача дополнительных параметров команде habitat package.
-
package_name - Тип Ruby: Строка, Массив
Необязательное свойство для установки имени пакета, если оно отличается от имени блока ресурса.
-
source - Тип Ruby: Строка
Необязательный путь к пакету на локальном файловом сервере.
-
timeout - Тип Ruby: Строка, Целое число
Время ожидания в секундах до истечения времени.
-
version - Тип Ruby: Строка, Массив
Версия пакета для установки или обновления.
Общие функциональные возможности ресурсов
Ресурсы 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[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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса habitat_package в рецептах:
Установить core/redis
habitat_package 'core/redis'
Установить определённую версию пакета из канала unstable
habitat_package 'core/redis' do
version '3.2.3'
channel 'unstable'
end
Установить пакет с определённой версией и ревизией
habitat_package 'core/redis' do
version '3.2.3/20160920131015'
end
Установить пакет и принудительно связать его бинарные файлы с системным путем
habitat_package 'core/nginx' do
binlink :force
end
Установить пакет и связать его бинарные файлы с системным путем
habitat_package 'core/nginx' do
options '--binlink'
end
Удалить пакет и все его версии
habitat_package 'core/nginx'
action :remove
end
Удалить определённую версию пакета
habitat_package 'core/nginx/3.2.3'
action :remove
end
Удалить пакет, но сохранить некоторые версии Примечание: Доступно начиная с Habitat 1.5.86
habitat_package 'core/nginx'
keep_latest '2'
action :remove
end
**Remove package but keep dependencies**
habitat_package 'core/nginx'
no_deps false
action :remove
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/habitat_package/