Ресурс chef_client_config
Эта страница сгенерирована из исходного кода Chef. Чтобы предложить изменение, отредактируйте файл chef_client_config.rb и отправьте запрос на вытягивание в репозиторий Chef.
Используйте ресурс chef_client_config для создания файла client.rb в каталоге конфигурации Chef Infra Client. Дополнительные сведения об имеющихся параметрах в файле конфигурации 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
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
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 Client выполнит для перевода узла в нужное состояние. -
additional_config,chef_license,chef_server_url,config_directory,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,report_handlers,ssl_verify_mode,start_handlers, иuser— доступные для этого ресурса свойства.
Действия
Ресурс chef_client_config имеет следующие действия:
:create:nothing- Этот блок ресурса не выполняет действий, пока не получит уведомление от другого ресурса. После получения уведомления этот блок ресурса либо выполняется немедленно, либо помещается в очередь для выполнения в конце выполнения Chef Infra Client.
:remove
Свойства
Ресурс chef_client_config имеет следующие свойства:
additional_config-
Тип в Ruby: Строка
Дополнительный текст для добавления в конец конфигурации client.rb. Это может быть использовано для выполнения пользовательского Ruby или добавления менее распространенных параметров конфигурации
chef_license-
Тип в Ruby: СтрокаДопустимые значения:
"accept", "accept-no-persist", "accept-silent"Принять Лицензионное соглашение Chef
chef_server_url-
Тип в Ruby: Строка |
REQUIREDURL сервера Chef Infra.
config_directory-
Тип в Ruby: Строка | Значение по умолчанию:
`/etc/chef/` on *nix-like systems and `C:\chef\` on WindowsКаталог для сохранения client.rb.
event_loggers-
Тип в Ruby: Массив | Значение по умолчанию:
[]
exception_handlers-
Тип в Ruby: Массив | Значение по умолчанию:
[]Массив словарей, содержащих класс обработчика исключений и аргументы, которые необходимо передать этому классу при инициализации. Словарь должен содержать ключи
classиargument, гдеclass— строка, аargument— массив строковых значений в кавычках. Например:[{'class' => 'MyHandler', %w('"argument1"', '"argument2"')}]
file_backup_path-
Тип в Ruby: Строка
Расположение для сохранения резервных файлов. Если это значение пустое, резервные файлы сохраняются в каталоге целевого файла.
file_cache_path-
Тип в Ruby: Строка
Расположение для сохранения кулинарных книг (и других временных данных) при синхронизации. Это значение также может быть использовано в рецептах для скачивания файлов с помощью ресурса
remote_file.
file_staging_uses_destdir-
Тип в Ruby: Строка
Как выполняется размещение файлов (через временные файлы). При значении
true, временные файлы создаются в каталоге, где будут располагаться файлы. При значенииfalse, временные файлы создаются вENV['TMP']
formatters-
Тип в Ruby: Массив | Значение по умолчанию:
[]
ftp_proxy-
Тип в Ruby: Строка
Прокси-сервер для FTP-соединений.
group-
Тип в Ruby: Строка
Группа, которой должен принадлежать файл client.rb и каталог конфигурации, если он должен быть создан. Примечание: каталог конфигурации не будет создан, если он уже существует, что позволяет вам дополнительно контролировать настройку этого каталога вне этого ресурса.
http_proxy-
Тип в Ruby: Строка
Прокси-сервер для HTTP-соединений.
https_proxy-
Тип в Ruby: Строка
Прокси-сервер для HTTPS-соединений.
log_level-
Тип в Ruby: СимволДопустимые значения:
:auto, :debug, :fatal, :info, :trace, :warnУровень ведения журнала, выполняемый Chef Infra Client.
log_location-
Тип в Ruby: Строка, Символ
Расположение для сохранения журналов. Это может быть путь к файлу журнала на диске
:syslog, чтобы вести журнал в Syslog,:win_evtчтобы вести журнал в журнал событий Windows, или'STDERR'/'STDOUT'для ведения журнала в текстовые потоки *nix.
minimal_ohai-
Тип в Ruby: true, false
Выполнение минимального набора плагинов Ohai, предоставляющих данные, необходимые для выполнения встроенных ресурсов Chef Infra Client. Установка этого значения в true пропустит многие большие и ресурсоёмкие наборы данных, такие как
cloudилиpackages. Установка этого значения в true может нарушить работу кулинарных книг, предполагающих, что все данные Ohai будут присутствовать.
named_run_list-
Тип в Ruby: Строка
Конкретный именованный список задач, определенный в применённом Policyfile узла, который следует использовать при запуске Chef Infra Client.
no_proxy-
Тип в Ruby: Строка, Массив | Значение по умолчанию:
[]Список URL-адресов через запятую или массив URL-адресов, для которых не требуется прокси.
node_name-
Тип в Ruby: Строка | Значение по умолчанию:
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: Массив | Значение по умолчанию:
[]Плагины Ohai, которые следует отключить, чтобы ускорить запуск Chef Infra Client и уменьшить размер данных узла, отправляемых в Chef Infra Client.
ohai_optional_plugins-
Тип в Ruby: Массив | Значение по умолчанию:
[]Дополнительные плагины Ohai, которые следует включить для получения дополнительных данных Ohai, используемых в кулинарных книгах.
pid_file-
Тип в Ruby: Строка
Расположение для сохранения номера процесса (pid). Исполняемый файл, запущенный как демон, записывает pid в указанный файл.
policy_group-
Тип в Ruby: Строка
Имя
policy group, существующего на сервере Chef Infra.policy_nameтакже должно быть указано при установке этого свойства.
policy_name-
Тип в Ruby: Строка
Имя политики, определённой параметром
nameв файле Policyfile.rb.policy_groupнеобходимо при установке этого свойства.
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, подключения S3 и любые URL-адреса HTTPS-ресурсов remote_file, используемые при выполнении 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 InfraClient.
Уведомления
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.
Примеры
Следующие примеры демонстрируют различные подходы к использованию ресурса chef_client_config в рецептах:
Минимальная конфигурация клиента Chef Infra Client client.rb:
Абсолютно минимальная конфигурация, необходимая для связи узла с сервером Infra, — это URL сервера Infra. Все другие параметры конфигурации либо имеют значения на стороне сервера (файлы политики, роли, среды и т. д.), либо имеют значения по умолчанию, определенные при запуске клиента.
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 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/