Ресурс windows_auto_run
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменения, отредактируйте файл windows_auto_run.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.
Используйте ресурс windows_auto_run для настройки запуска приложений при входе в систему.
Новая функция в Chef Infra Client 14.0.
Синтаксис
Полный синтаксис всех свойств, доступных для ресурса windows_auto_run:
windows_auto_run 'name' do
args String
path String
program_name String # default value: 'name' unless specified
root Symbol # default value: :machine
action Symbol # defaults to :create if not specified
endгде:
-
windows_auto_run— это ресурс. -
name— имя блока ресурса. -
actionопределяет действия, которые Chef Infra Client выполнит для приведения узла к нужному состоянию. -
args,path,program_name, иroot— доступные свойства этого ресурса.
Действия
Ресурс windows_auto_run имеет следующие действия:
:create- Создаёт элемент для запуска при входе в систему. (по умолчанию)
:nothing- Этот блок ресурса не действует, пока не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:remove- Удаляет элемент, который был ранее настроен для запуска при входе в систему.
Свойства
Ресурс windows_auto_run имеет следующие свойства:
-
args - Тип Ruby: Строка
Любые аргументы, которые нужно использовать с программой.
-
path - Тип Ruby: Строка
Путь к программе, которая будет запущена при входе в систему.
-
program_name - Тип Ruby: Строка | Значение по умолчанию:
The resource block's nameИмя программы, которая будет запущена при входе в систему, если оно отличается от имени блока ресурса.
-
root - Тип Ruby: Символ | Значение по умолчанию:
:machineДопустимые значения::machine, :userКлюч корневого регистра, под которым будет помещён запись.
Общие функциональные возможности ресурсов
Ресурсы 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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса windows_auto_run в рецептах:
Запуск BGInfo при входе в систему
windows_auto_run 'BGINFO' do
program 'C:/Sysinternals/bginfo.exe'
args ''C:/Sysinternals/Config.bgi' /NOLICPROMPT /TIMER:0'
action :create
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/windows_auto_run/