Ресурс ohai_hint
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл ohai_hint.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.
Используйте ресурс ohai_hint, чтобы помочь в обнаружении конфигурации, передавая данные подсказок в Ohai.
Новая функция в Chef Infra Client 14.0.
Синтаксис
Полный синтаксис всех свойств, доступных для ресурса ohai_hint:
ohai_hint 'name' do
compile_time true, false # default value: true
content Hash
hint_name String # default value: 'name' unless specified
action Symbol # defaults to :create if not specified
endгде:
-
ohai_hint— это ресурс. -
name— имя, заданное для блока ресурса. -
actionопределяет, какие шаги клиент Chef Infra предпримет, чтобы привести узел к желаемому состоянию. -
compile_time,content, иhint_name— доступные свойства этого ресурса.
Действия
Ресурс ohai_hint имеет следующие действия:
:create- Создать файл подсказки Ohai. (по умолчанию)
:delete- Удалить файл подсказки Ohai.
:nothing- Этот блок ресурса не действует, пока другой ресурс не уведомит его о действии. После получения уведомления этот блок ресурса либо выполняется немедленно, либо ставится в очередь для выполнения в конце выполнения Chef Infra Client.
Свойства
Ресурс ohai_hint имеет следующие свойства:
-
compile_time - Тип Ruby: true, false | Значение по умолчанию:
trueОпределяет, выполняется ли ресурс на стадии компиляции.
-
content - Тип Ruby: Hash
Значения, которые нужно включить в файл подсказок.
-
hint_name - Тип Ruby: Строка | Значение по умолчанию:
The resource block's nameНеобязательное свойство для задания имени подсказки, если оно отличается от имени блока ресурса.
Общие функции ресурсов
Ресурсы 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.
Уведомления
-
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]', действие, которое нужно выполнить, и :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.
Примеры
В следующих примерах показаны различные подходы к использованию ресурса ohai_hint в рецептах:
Создать файл подсказки
ohai_hint 'example' do
content a: 'test_content'
end
Создать файл подсказки с именем, не совпадающим с именем ресурса
ohai_hint 'example' do
hint_name 'custom'
end
Создать файл подсказки, который не загружается во время компиляции
ohai_hint 'example' do
compile_time false
end
Удалить файл подсказки
ohai_hint 'example' do
action :delete
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/ohai_hint/