Ресурс chef_client_cron
Эта страница сгенерирована из исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл chef_client_cron.rb и отправьте запрос на вытягивание в репозиторий Chef Infra Client.
Используйте ресурс chef_client_cron, чтобы настроить клиент Chef Infra для запуска в качестве задачи cron. Этот ресурс также создаст указанную директорию журнала, если она еще не существует.
Новое в Chef Infra Client 16.0.
Синтаксис
Полный синтаксис всех доступных свойств ресурса chef_client_cron:
chef_client_cron 'name' do
accept_chef_license true, false # default value: false
append_log_file true, false # default value: true
chef_binary_path String # default value: "/opt/chef/bin/chef-client"
comment String
config_directory String # default value: "/etc/chef"
daemon_options Array # default value: []
day Integer, String # default value: "*"
environment Hash # default value: {}
hour Integer, String # default value: "*"
job_name String # default value: "chef-client"
log_directory String
log_file_name String # default value: "client.log"
mailto String
minute Integer, String # default value: "0,30"
month Integer, String # default value: "*"
nice Integer, String
splay Integer, String # default value: 300
user String # default value: "root"
weekday Integer, String # default value: "*"
action Symbol # defaults to :add if not specified
endгде:
-
chef_client_cron— это ресурс. -
name— имя блока ресурса. -
actionопределяет, какие действия клиент Chef Infra предпримет для приведения узла в желаемое состояние. -
accept_chef_license,append_log_file,chef_binary_path,comment,config_directory,daemon_options,day,environment,hour,job_name,log_directory,log_file_name,mailto,minute,month,nice,splay,user, иweekday— это доступные свойства этого ресурса.
Действия
Ресурс chef_client_cron имеет следующие действия:
:add- Добавить задачу cron для запуска клиента Chef Infra. (по умолчанию)
:nothing- Этот блок ресурса не выполняет действий, пока не получит уведомление от другого ресурса. После получения уведомления, этот блок либо выполняется немедленно, либо добавляется в очередь для выполнения в конце выполнения клиента Chef Infra.
:remove- Удалить задачу cron для клиента Chef Infra.
Свойства
Ресурс chef_client_cron имеет следующие свойства:
-
accept_chef_license - Тип в Ruby: true, false | Значение по умолчанию:
falseПринять соглашение об использовании и услугах Master Chef Online. См. https://www.chef.io/online-master-agreement
-
append_log_file - Тип в Ruby: true, false | Значение по умолчанию:
trueДобавлять в файл журнала вместо перезаписи его при каждом запуске.
-
chef_binary_path - Тип в Ruby: Строка | Значение по умолчанию:
/opt/chef/bin/chef-clientПуть к бинарному файлу chef-client.
-
comment - Тип в Ruby: Строка
Комментарий для добавления в файл cron.d.
-
config_directory - Тип в Ruby: Строка | Значение по умолчанию:
/etc/chefПуть к директории конфигурации.
-
daemon_options - Тип в Ruby: Массив | Значение по умолчанию:
[]Массив параметров для передачи команде chef-client.
-
day - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
*День месяца, в который должен выполняться Chef Infra Client (1-31), или шаблон cron, например, ‘1,7,14,21,28’.
-
environment - Тип в Ruby: Словарь | Значение по умолчанию:
{}Словарь, содержащий дополнительные произвольные переменные среды, в которых будет выполняться задача cron в формате
({'ENV_VARIABLE' => 'VALUE'}).
-
hour - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
*Час, в который должен выполняться Chef Infra Client (0-23), или шаблон cron, например, ‘0,12’.
-
job_name - Тип в Ruby: Строка | Значение по умолчанию:
chef-clientИмя задачи cron, которую нужно создать.
-
log_directory - Тип в Ruby: Строка | Значение по умолчанию:
/Library/Logs/Chef on macOS and /var/log/chef otherwiseПуть к каталогу для создания файла журнала.
-
log_file_name - Тип в Ruby: Строка | Значение по умолчанию:
client.logИмя файла журнала.
-
mailto - Тип в Ruby: Строка
Адрес электронной почты, на который будут отправляться уведомления о сбоях задач cron.
-
minute - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
0,30Минута, в которую должен выполняться Chef Infra Client (0-59), или шаблон cron, например, ‘0,30’.
-
month - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
*Месяц в году, в который должен выполняться Chef Infra Client (1-12, jan-dec, или *).
-
nice - Тип в Ruby: Целое число, Строка
Приоритет процесса для запуска chef-client. Значение -20 — максимальный приоритет, 19 — минимальный.
Новое в Chef Infra Client 16.5
-
splay - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
300Случайное количество секунд от 0 до X, добавляемое к интервалу, чтобы все команды chef-client не выполнялись одновременно.
-
user - Тип в Ruby: Строка | Значение по умолчанию:
rootИмя пользователя, от имени которого запускается Chef Infra Client.
-
weekday - Тип в Ruby: Целое число, Строка | Значение по умолчанию:
*День недели, в который должен выполняться Chef Infra Client (0-7, mon-sun, или *), где воскресенье — это 0 и 7.
Общие функциональные возможности ресурсов
Ресурсы 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: Целое число | Значение по умолчанию:
0Количество попыток перехвата исключений и повторного выполнения ресурса.
retry_delay-
Тип в Ruby: Целое число | Значение по умолчанию:
2Задержка в секундах между попытками повтора.
sensitive-
Тип в Ruby: true, false | Значение по умолчанию:
falseОбеспечение того, что конфиденциальные данные ресурсов не регистрируются клиентом Chef Infra.
Уведомления
-
notifies -
Тип в Ruby: Символ, 'Chef::Resource[Строка]'
Ресурс может уведомлять другой ресурс о выполнении действия при изменении его состояния. Укажите
'resource[name]', действие, которое должен предпринять:action, и:timerдля этого действия. Ресурс может уведомлять несколько ресурсов; используйте инструкциюnotifiesдля каждого уведомляемого ресурса.Если указанный ресурс не существует, возникает ошибка. В отличие от этого,
subscribesне завершится с ошибкой, если исходный ресурс не найден.
Таймер определяет момент во время выполнения клиента Chef Infra, когда выполняется уведомление. Доступны следующие таймеры:
:before-
Определяет, что действие над уведомленным ресурсом должно быть выполнено до обработки блока ресурса, в котором находится уведомление.
:delayed-
По умолчанию. Определяет, что уведомление должно быть помещено в очередь и выполнено в конце выполнения клиента Chef Infra.
-
: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, когда выполняется уведомление. Доступны следующие таймеры:
: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.
Примеры
В следующих примерах демонстрируются различные подходы к использованию ресурса chef_client_cron в рецептах:
Настройка Chef Infra Client для запуска с дефолтным интервалом в 30 минут:
chef_client_cron 'Run Chef Infra Client as a cron job'
Запуск Chef Infra Client два раза в день:
chef_client_cron 'Run Chef Infra Client every 12 hours' do
minute 0
hour '0,12'
end
Запуск Chef Infra Client с дополнительными параметрами, передаваемыми клиенту:
chef_client_cron 'Run an override recipe' do
daemon_options ['--override-runlist mycorp_base::default']
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/chef_client_cron/