Ресурс windows_task
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл windows_task.rb и отправьте запрос на pull в репозиторий Chef.
Страница справочника по ресурсам
Используйте ресурс windows_task для создания, удаления или запуска запланированной задачи Windows.
Примечание
Ресурс windows_task, предоставленный как часть поваренной книги windows, включал действие :change, которое было удалено из windows_task в клиенте Chef. Вместо этого можно использовать действие :create для обновления существующей задачи.
Новое в Chef Infra Client 13.0.
Синтаксис
Полный синтаксис для всех свойств, доступных ресурсу windows_task, следующий:
windows_task 'name' do
command String
cwd String
day String, Integer
description String
disallow_start_if_on_batteries true, false # default value: false
execution_time_limit String, Integer # default value: "PT72H (72 hours in ISO8601 duration format)"
force true, false # default value: false
frequency Symbol
frequency_modifier Integer, String # default value: 1
idle_time Integer
interactive_enabled true, false # default value: false
minutes_duration String, Integer
minutes_interval String, Integer
months String
password String
priority Integer # default value: 7
random_delay String, Integer
run_level Symbol # default value: :limited
start_day String # default value: The current date.
start_time String
start_when_available true, false # default value: false
stop_if_going_on_batteries true, false # default value: false
task_name String # default value: 'name' unless specified
user String # default value: The localized SYSTEM user for the node.
action Symbol # defaults to :create if not specified
endгде:
-
windows_task— это ресурс. -
name— это имя, присвоенное блоку ресурса. -
actionопределяет, какие шаги предпримет клиент Chef Infra для приведения узла в желаемое состояние. -
command,cwd,day,description,disallow_start_if_on_batteries,execution_time_limit,force,frequency,frequency_modifier,idle_time,interactive_enabled,minutes_duration,minutes_interval,months,password,priority,random_delay,run_level,start_day,start_time,start_when_available,stop_if_going_on_batteries,task_nameиuser— это свойства, доступные для этого ресурса.
Действия
Ресурс windows_task имеет следующие действия:
:create- Создает задачу или обновляет существующую задачу, если изменилось какое-либо свойство.
:delete- Удаляет задачу.
:disable- Отключает задачу.
:enable- Включает задачу.
:end- Завершает задачу.
:nothing- Этот блок ресурсов не выполняет никаких действий, пока не получит уведомление от другого ресурса о необходимости принять меры. После получения уведомления этот блок ресурсов либо запускается немедленно, либо помещается в очередь для запуска в конце выполнения клиента Chef Infra.
:run- Запускает задачу.
Свойства
Ресурс windows_task имеет следующие свойства:
command-
Тип Ruby: String
Команда, которая будет выполнена запланированной задачей Windows.
cwd-
Тип Ruby: String
Каталог, из которого будет запущена задача.
day-
Тип Ruby: String, Integer
День(дни), в которые выполняется задача.
- Используется с частотой задач
:monthlyи:weekly, - Допустимые значения с частотой
:weekly— этоMON-SUNили\*. - Допустимые значения с частотой
:monthly— это1-31илиMONдоSUNиLASTDAY.- Используйте
MON-SUNилиLASTDAY, если вы устанавливаетеfrequency_modifierкак"FIRST, SECOND, THIRD etc.", иначе используйте1-31. - Несколько дней должны быть разделены запятыми. Например,
"1, 2, 3"или"MON, WEN, FRI".
- Используйте
- Используется с частотой задач
description-
Тип Ruby: String
Описание задачи.
Новое в Chef Client 14.7
disallow_start_if_on_batteries-
Тип Ruby: true, false | Значение по умолчанию:
falseЗапретить запуск задачи, если система работает от батареи.
Новое в Chef Client 14.4
execution_time_limit-
Тип Ruby: String, Integer | Значение по умолчанию:
PT72H (72 hours in ISO8601 duration format)Максимальное время выполнения задачи. Это поле принимает либо секунды, либо значение продолжительности в формате ISO8601.
force-
Тип Ruby: true, false | Значение по умолчанию:
falseПри использовании с create обновит задачу.
frequency-
Тип Ruby: SymbolДопустимые значения:
:daily, :hourly, :minute, :monthly, :none, :on_idle, :on_logon, :once, :onstart, :weekly- Частота выполнения задачи.
- Это обязательное свойство в Chef 14.1
- Допустимые значения:
:minute,:hourly,:daily,:weekly,:monthly,:none,:once,:on_logon,:onstart,:on_idle. - Значение
:onceтребует свойстваstart_time.
frequency_modifier-
Тип Ruby: Integer, String | Значение по умолчанию:
1Для частоты
:minuteдопустимые значения — от 1 до 1439Для частоты
:hourlyдопустимые значения — от 1 до 23Для частоты
:dailyдопустимые значения — от 1 до 365Для частоты
:weeklyдопустимые значения — от 1 до 52-
Для частоты
:monthlyдопустимые значения —('FIRST', 'SECOND', 'THIRD', 'FOURTH', 'LAST')ИЛИ1-12.: - например, если пользователь хочет запустить задачу на
second week of the month, используйте значениеfrequency_modifierкакSECOND. Несколько значений для недель месяца должны быть разделены запятыми, например"FIRST, THIRD, LAST". - Чтобы запускать задачу каждый (n) месяц, пользователь использует значения «1-12».
idle_time-
Тип Ruby: Integer
Для частоты
:on_idle, время (в минутах) без активности пользователя, которое должно пройти для запуска задачи, от1до999.
interactive_enabled-
Тип Ruby: true, false | Значение по умолчанию:
falseРазрешить задаче выполняться интерактивно или неинтерактивно. Требуется также указать пользователя и пароль.
minutes_duration- Тип Ruby: String, Integer
minutes_interval- Тип Ruby: String, Integer
months-
Тип Ruby: String
Месяцы года, в которые выполняется задача, например:
JAN, FEBили*. Несколько месяцев должны быть разделены запятыми. Например,Jan, Feb, Mar, Dec.
password-
Тип Ruby: String
Пароль пользователя. Если используется это свойство, то должно быть установлено свойство user.
priority-
Тип Ruby: Integer | Значение по умолчанию:
7Используется для установки уровней приоритета в диапазоне от 0 до 10.
random_delay-
Тип Ruby: String, Integer
Задерживает задачу до заданного времени (в секундах).
run_level-
Тип Ruby: Symbol | Значение по умолчанию:
:limitedДопустимые значения::highest, :limitedЗапуск с правами
:limitedили:highest.
start_day-
Тип Ruby: String | Значение по умолчанию:
The current date.Указывает первую дату выполнения задачи в формате MM/DD/YYYY.
start_time-
Тип Ruby: String
Указывает время начала выполнения задачи в формате HH:mm.
start_when_available-
Тип Ruby: true, false | Значение по умолчанию:
falseДля запуска задачи в любое время после истечения ее запланированного времени.
Новое в Chef Client 14.15
stop_if_going_on_batteries-
Тип Ruby: true, false | Значение по умолчанию:
falseПараметр запланированной задачи при переходе системы на батарейное питание.
Новое в Chef Client 14.4
task_name-
Тип Ruby: String | Значение по умолчанию:
The resource block's nameНеобязательное свойство для задания имени задачи, если оно отличается от имени блока ресурса. Пример:
Task Nameили/Task Name
user-
Тип Ruby: String | Значение по умолчанию:
The localized SYSTEM user for the node.Пользователь, от имени которого будет запущена задача.
Общие функции ресурса
Ресурсы 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: Integer | Значение по умолчанию:
0Количество попыток перехвата исключений и повтора выполнения ресурса.
retry_delay-
Тип Ruby: Integer | Значение по умолчанию:
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]', :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_task в рецептах:
Создание запланированной задачи для запуска каждые 15 минут как пользователь Администратор:
windows_task 'chef-client' do
user 'Administrator'
password 'password'
command 'chef-client'
run_level :highest
frequency :minute
frequency_modifier 15
end
Создание запланированной задачи для запуска каждые 2 дня:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :daily
frequency_modifier 2
end
Создание запланированной задачи для запуска в определённые дни недели:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :weekly
day 'Mon, Thu'
end
Создание запланированной задачи для запуска только один раз:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :once
start_time '16:10'
end
Создание запланированной задачи для запуска в текущий день каждые 3 недели и задержкой до 1 минуты:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :weekly
frequency_modifier 3
random_delay '60'
end
Создание запланированной задачи для запуска еженедельно, начиная с 28 декабря 2018 года:
windows_task 'chef-client 8' do
command 'chef-client'
run_level :highest
frequency :weekly
start_day '12/28/2018'
end
Создание запланированной задачи для запуска каждую понедельник и пятницу каждые 2 недели:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :weekly
frequency_modifier 2
day 'Mon, Fri'
end
Создание запланированной задачи для запуска при простоях компьютера с длительностью простоя 20 минут:
windows_task 'chef-client' do
command 'chef-client'
run_level :highest
frequency :on_idle
idle_time 20
end
Удаление задачи с именем «старая задача»:
windows_task 'old task' do
action :delete
end
Включение задачи с именем «chef-client»:
windows_task 'chef-client' do
action :enable
end
Отключение задачи с именем «ProgramDataUpdater» с путём задачи «\Microsoft\Windows\Application Experience\ProgramDataUpdater»
windows_task '\Microsoft\Windows\Application Experience\ProgramDataUpdater' do
action :disable
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_task/