Ресурс chef_client_config
Эта страница создана на основе исходного кода клиента Chef Infra. Чтобы предложить изменение, отредактируйте файл chef_client_config.rb и отправьте запрос на включение изменений в репозиторий клиента Chef Infra.
Страница со всеми ресурсами Infra
Используйте ресурс chef_client_config для создания файла client.rb в каталоге конфигурации клиента Chef Infra. См. документацию по client.rb для получения более подробной информации о параметрах, доступных в файле конфигурации client.rb.
Новое в Chef Infra Client 16.6.
Синтаксис
Полный синтаксис для всех свойств, доступных ресурсу chef_client_config:
chef_client_config 'name' do
additional_config String
chef_license String
chef_server_url String
config_directory String
data_collector_server_url String
data_collector_token String
event_loggers Array # default value: []
exception_handlers Array # default value: []
file_backup_path String
file_cache_path String
file_staging_uses_destdir String
formatters Array # default value: []
ftp_proxy String
group String
http_proxy String
https_proxy String
log_level Symbol
log_location String, Symbol
minimal_ohai true, false
named_run_list String
no_proxy String, Array # default value: []
node_name String
ohai_disabled_plugins Array # default value: []
ohai_optional_plugins Array # default value: []
pid_file String
policy_group String
policy_name String
policy_persist_run_list true, false
report_handlers Array # default value: []
ssl_verify_mode Symbol, String
start_handlers Array # default value: []
user String
action Symbol # defaults to :create if not specified
endгде:
-
chef_client_config— это ресурс. -
name— это имя, присвоенное блоку ресурса. -
actionопределяет, какие действия предпримет клиент Chef Infra для приведения узла в желаемое состояние. -
additional_config,chef_license,chef_server_url,config_directory,data_collector_server_url,data_collector_token,event_loggers,exception_handlers,file_backup_path,file_cache_path,file_staging_uses_destdir,formatters,ftp_proxy,group,http_proxy,https_proxy,log_level,log_location,minimal_ohai,named_run_list,no_proxy,node_name,ohai_disabled_plugins,ohai_optional_plugins,pid_file,policy_group,policy_name,policy_persist_run_list,report_handlers,ssl_verify_mode,start_handlers, иuser— это свойства, доступные для этого ресурса.
Действия
Ресурс chef_client_config имеет следующие действия:
:create- Создать файл конфигурации client.rb для настройки клиента Chef Infra. (по умолчанию)
:nothing- Этот блок ресурса не выполняет никаких действий, если не получит уведомление от другого ресурса о необходимости выполнить действие. После получения уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения клиента Chef Infra.
:remove- Удалить файл конфигурации client.rb для настройки клиента Chef Infra.
Свойства
Ресурс chef_client_config имеет следующие свойства:
-
additional_config - Тип Ruby: String
Дополнительный текст для добавления в нижней части конфигурации client.rb. Это может быть использовано для выполнения пользовательского кода Ruby или для добавления менее распространенных параметров конфигурации
-
chef_license - Тип Ruby: String Допустимые значения:
"accept", "accept-no-persist", "accept-silent"
-
chef_server_url - Тип Ruby: String |
REQUIREDURL-адрес сервера Chef Infra.
-
config_directory - Тип Ruby: String | Значение по умолчанию:
`/etc/chef/` on *nix-like systems and `C:\chef\` on WindowsКаталог для хранения client.rb.
-
data_collector_server_url - Тип Ruby: String
URL-адрес коллектора данных (обычно Automate) для отправки данных узла, сходимости и соответствия.
Примечание
По возможности используйте Chef Infra Server для всей отчетности по сбору данных, так как это устраняет необходимость распространения токенов на отдельные узлы.
Новое в Chef Infra Client 17.8
-
data_collector_token - Тип Ruby: String
Токен коллектора данных для взаимодействия с URL-адресом сервера коллектора данных (Automate).
Примечание
По возможности используйте Chef Infra Server для всей отчетности по сбору данных, так как это устраняет необходимость распространения токенов на отдельные узлы.
Новое в Chef Infra Client 17.8
-
event_loggers - Тип Ruby: Array | Значение по умолчанию:
[]
-
exception_handlers - Тип Ruby: Array | Значение по умолчанию:
[]Массив хэшей, содержащих класс обработчика исключений и аргументы для передачи этому классу при инициализации. Хэш должен включать ключи
classиargument, гдеclass— это строка, аargument— это массив строковых значений в кавычках. Например:[{'class' => 'MyHandler', %w('"argument1"', '"argument2"')}]
-
file_backup_path - Тип Ruby: String
Местоположение, в котором хранятся резервные копии файлов. Если это значение пустое, резервные копии файлов хранятся в каталоге целевого файла
-
file_cache_path - Тип Ruby: String
Местоположение, в котором хранятся файлы поваренных книг (и другие временные данные) при их синхронизации. Это значение также может использоваться в рецептах для загрузки файлов с помощью ресурса
remote_file.
-
file_staging_uses_destdir - Тип Ruby: String
Как выполняется постановка файлов (через временные файлы). Когда
true, временные файлы создаются в каталоге, в котором будут находиться файлы. Когдаfalse, временные файлы создаются вENV['TMP']
-
formatters - Тип Ruby: Array | Значение по умолчанию:
[]Форматировщики журналов клиента для загрузки.
-
ftp_proxy - Тип Ruby: String
Прокси-сервер для использования для FTP-подключений.
-
group - Тип Ruby: String
Группа, которой должен принадлежать файл client.rb и каталог конфигурации, если его необходимо создать.
Примечание
Каталог конфигурации не будет создан, если он уже существует, что позволяет вам дополнительно контролировать настройку этого каталога вне этого ресурса.
-
http_proxy - Тип Ruby: String
Прокси-сервер для использования для HTTP-подключений.
-
https_proxy - Тип Ruby: String
Прокси-сервер для использования для HTTPS-подключений.
-
log_level - Тип Ruby: Symbol Допустимые значения:
:auto, :debug, :fatal, :info, :trace, :warnУровень ведения журнала, выполняемый клиентом Chef Infra.
-
log_location - Тип Ruby: String, Symbol
Местоположение для сохранения журналов. Это может быть либо путь к журналу на диске
:syslogдля ведения журнала в Syslog,:win_evtдля ведения журнала в журнале событий Windows или'STDERR'/'STDOUT'для ведения журнала в текстовых потоках *nix.
-
minimal_ohai - Тип Ruby: true, false
Запускайте минимальный набор плагинов Ohai, предоставляющих данные, необходимые для выполнения встроенных ресурсов клиента Chef Infra. Установка этого значения в true приведет к пропуску многих больших и трудоемких наборов данных, таких как
cloudилиpackages. Установка этого значения в true может нарушить работу поваренных книг, которые предполагают наличие всех данных Ohai.
-
named_run_list - Тип Ruby: String
Конкретный именованный список выполнения, определенный в примененном Policyfile узла, который следует использовать при запуске клиента Chef Infra.
-
no_proxy - Тип Ruby: String, Array | Значение по умолчанию:
[]Список, разделенный запятыми, или массив URL-адресов, которым не требуется прокси-сервер.
-
node_name - Тип Ruby: String | Значение по умолчанию:
The `node.name` value reported by Chef Infra Client.Имя узла. Эта конфигурация устанавливает значение
node.name, используемое в поваренных книгах, и значениеclient_name, используемое при аутентификации на сервере Chef Infra для определения конфигурации для применения.Примечание
По умолчанию эта конфигурация использует значение
node.name, которое будет установлено во время загрузки. Жесткое кодирование этого значения в конфигурацииclient.rbпозволяет избежать логики на сервере Chef Infra, которая выполняет поиск DNS и может завершиться ошибкой в случае сбоя DNS. Чтобы пропустить это значение по умолчанию и вместо этого использовать встроенную логику сервера Chef Infra, установите это свойство вnil
-
ohai_disabled_plugins - Тип Ruby: Array | Значение по умолчанию:
[]Плагины Ohai, которые следует отключить, чтобы ускорить выполнение клиента Chef Infra и уменьшить размер данных узла, отправляемых в клиент Chef Infra
-
ohai_optional_plugins - Тип Ruby: Array | Значение по умолчанию:
[]Дополнительные плагины Ohai, которые следует включить, чтобы предоставить дополнительные данные Ohai для использования в поваренных книгах.
-
pid_file - Тип Ruby: String
Местоположение, в котором сохраняется номер идентификации процесса (pid). Выполняемый файл, запущенный как демон, записывает pid в указанный файл.
-
policy_group - Тип Ruby: String
Имя
policy group, существующего на сервере Chef Infra.policy_nameтакже необходимо указать при установке этого свойства.
-
policy_name - Тип Ruby: String
Имя политики, как определено параметром
nameв файле Policyfile.rb.policy_groupпри установке этого свойства.
-
policy_persist_run_list - Тип Ruby: true, false
Переопределить списки выполнения, определенные в Policyfile, с помощью
run_list, определенного на сервере Chef Infra.Новое в Chef Infra Client 17.3
-
report_handlers - Тип Ruby: Массив | Значение по умолчанию:
[]Массив словарей, содержащих класс обработчика отчетов и аргументы, которые нужно передать этому классу при инициализации. Словарь должен содержать ключи
classиargument, гдеclass— строка, аargument— массив строковых значений в кавычках. Например:[{'class' => 'MyHandler', %w('"argument1"', '"argument2"')}]
-
ssl_verify_mode - Тип Ruby: Символ, Строка Допустимые значения:
:verify_none, :verify_peerУстановите режим проверки для запросов HTTPS.
- Используйте :verify_none для отключения проверки сертификатов SSL.
- Используйте :verify_peer для проверки всех сертификатов SSL, включая подключения к Chef Infra Server, подключения к S3 и любые URL ресурсов remote_file HTTPS, используемые в выполнении Chef Infra Client. Это рекомендуемое значение.
-
start_handlers - Тип Ruby: Массив | Значение по умолчанию:
[]Массив словарей, содержащих класс обработчика отчетов и аргументы, которые нужно передать этому классу при инициализации. Словарь должен содержать ключи
classиargument, гдеclass— строка, аargument— массив строковых значений в кавычках. Например:[{'class' => 'MyHandler', %w('"argument1"', '"argument2"')}]
-
user - Тип Ruby: Строка
Пользователь, который должен владеть файлом client.rb и каталогом конфигурации, если его нужно создать.
Примечание
Каталог конфигурации не будет создан, если он уже существует, что позволяет вам дополнительно управлять настройкой этого каталога вне этого ресурса.
Общие функциональные возможности ресурсов
Ресурсы 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[Строка]'
Ресурс может уведомить другой ресурс о действиях при изменении его состояния. Укажите
'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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса chef_client_config в рецептах:
Минимальная конфигурация Chef Infra Client client.rb:
Абсолютно минимальная конфигурация, необходимая для связи узла с Chef Infra Server, — это URL Chef Infra Server. Все остальные параметры конфигурации либо имеют значения на стороне сервера (файлы правил, роли, среды и т. д.), либо имеют значения по умолчанию, определяемые при запуске клиента.
chef_client_config 'Create client.rb' do
chef_server_url 'https://chef.example.dmz'
end
Более сложная конфигурация Chef Infra Client client.rb:
chef_client_config 'Create client.rb' do
chef_server_url 'https://chef.example.dmz'
log_level :info
log_location :syslog
http_proxy 'proxy.example.dmz'
https_proxy 'proxy.example.dmz'
no_proxy %w(internal.example.dmz)
end
Добавление дополнительного содержимого конфигурации в client.rb:
Этот ресурс предназначен для предоставления общих параметров конфигурации. Некоторые параметры конфигурации отсутствуют, и некоторые пользователи могут захотеть использовать произвольный код Ruby в своей конфигурации. Для этого мы предлагаем свойство additional_config , которое можно использовать для добавления любой конфигурации или кода в конец файла client.rb. Также имейте в виду, что в каталоге конфигурации находится каталог client.d, где вы можете поместить дополнительные файлы .rb , содержащие параметры конфигурации. Их можно создавать, используя ресурсы file или template в ваших кулинарных книгах по мере необходимости.
chef_client_config 'Create client.rb' do
chef_server_url 'https://chef.example.dmz'
additional_config <<~CONFIG
# Extra config code to safely load a gem into the client run.
# Since the config is Ruby you can run any Ruby code you want via the client.rb.
# It's a great way to break things, so be careful
begin
require 'aws-sdk'
rescue LoadError
Chef::Log.warn "Failed to load aws-sdk."
end
CONFIG
end
Настройка двух обработчиков отчетов в client.rb:
chef_client_config 'Create client.rb' do
chef_server_url 'https://chef.example.dmz'
report_handlers [
{
'class' => 'ReportHandler1Class',
'arguments' => ["'FirstArgument'", "'SecondArgument'"],
},
{
'class' => 'ReportHandler2Class',
'arguments' => ["'FirstArgument'", "'SecondArgument'"],
},
]
end
Отчет непосредственно в точку сбора данных Chef Automate.
chef_client_config 'Create client.rb' do
chef_server_url 'https://chef.example.dmz'
data_collector_server_url 'https://automate.example.dmz'
data_collector_token 'TEST_TOKEN_TEST'
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_config/