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