config.rb
Предупреждение
config.rb является заменой файла knife.rb, начиная с выпуска Chef Client 12.0. Файл config.rb имеет идентичные настройки и поведение по сравнению с файлом knife.rb. Chef Infra Client в первую очередь ищет наличие файла config.rb, а если он не найден, то ищет файл knife.rb. Файл config.rb используется для указания конфигурационных деталей для knife.
Файл config.rb:
- Загружается каждый раз при запуске исполняемого файла knife
- По умолчанию Chef Infra Client ожидает найти этот файл по пути
~/.chef/config.rb; используйте опцию--configиз командной строки, чтобы изменить этот путь - По умолчанию не создается
- По умолчанию расположен по пути
~/.chef/config.rb(платформы UNIX и Linux) илиc:\Users\username\.chef(платформа Microsoft Windows, используйте опцию--configиз командной строки, чтобы изменить этот путь) - Переопределяет настройки по умолчанию, когда файл
config.rbсуществует по пути по умолчанию или по пути, указанному опцией--config
Примечание
config.rb расположен по пути %HOMEDRIVE%:%HOMEPATH%\.chef (например, c:\Users\<username>\.chef). Если этот путь необходимо использовать в скрипте, используйте %USERPROFILE%\chef-repo\.chefНастройки
В этом конфигурационном файле есть следующие настройки:
bootstrap_templateПуть к файлу шаблона, который будет использоваться во время операции bootstrap.
chef_server_url-
URL сервера Chef Infra. Например:
chef_server_url 'https://localhost/organizations/ORG_NAME' chef_zero.enabled-
Включить chef-zero. Эта настройка требует, чтобы
local_modeбыло установлено в значениеtrue. Значение по умолчанию:false. Например:chef_zero.enabled true chef_zero[:port]-
Порт, на котором будет слушать chef-zero. Значение по умолчанию:
8889. Например:chef_zero[:port] 8889 client_d_dirДиректория, содержащая дополнительные скрипты конфигурации для загрузки в Chef Infra Client.
client_key-
Расположение файла с ключом клиента в виде абсолютного пути. Значение по умолчанию:
/etc/chef/client.pem. Например:client_key '/etc/chef/client.pem' cookbook_copyrightИмя правообладателя авторских прав. Эта опция размещает уведомление об авторских правах, содержащее имя правообладателя, в каждом создаваемом файле. Если эта опция не указана, вместо неё используется имя «COMPANY_NAME»; её можно легко изменить позже.
cookbook_emailЭлектронный адрес лица, поддерживающего кулинарную книгу. Эта опция размещает электронный адрес в каждом создаваемом файле. Если не указано, используется имя электронной почты «YOUR_EMAIL»; его можно легко изменить позже.
cookbook_licenseТип лицензии, под которой распространяется кулинарная книга:
apachev2,gplv2,gplv3,mit, илиnone(по умолчанию). Эта опция размещает соответствующее уведомление о лицензии в создаваемых файлах:Apache v2.0(дляapachev2),GPL v2(дляgplv2),GPL v3(дляgplv3),MIT(дляmit), илиlicense 'Proprietary - All Rights Reserved(дляnone). Учитывайте лицензии на файлы внутри кулинарной книги и соблюдайте любые ограничения, которые они описывают.cookbook_path-
Поддиректория Chef Infra Client для хранения кулинарных книг. Это значение может быть строкой или массивом системных расположений файлов, обработанных в указанном порядке. Последняя кулинарная книга считается переопределяющей локальные изменения. Например:
cookbook_path [ '/var/chef/cookbooks', '/var/chef/site-cookbooks' ] data_bag_encrypt_version-
Минимальная требуемая версия шифрования мешков данных. Возможные значения:
1или2. Рекомендуется установить это значение в2для повышения безопасности. Например:data_bag_encrypt_version 2 fips-
Разрешает OpenSSL применять проверенные по стандарту FIPS меры безопасности при выполнении Chef Infra Client. Установите значение
trueдля включения проверенных по стандарту FIPS мер безопасности.Поддерживаются следующие операционные системы:
- Red Hat Enterprise Linux
- Oracle Enterprise Linux
- CentOS
- Windows
Поддержка FIPS была добавлена в версию Chef Server 12.13. Поддерживаются следующие операционные системы:
- Red Hat Enterprise Linux
- Oracle Enterprise Linux
- CentOS
local_mode-
Запустить Chef Infra Client в локальном режиме. Это позволяет всем командам, работающим с сервером Chef Infra, также работать с локальным chef-repo. Например:
local_mode true node_name-
Уникальный идентификатор узла. Это может быть имя пользователя с разрешением на аутентификацию на сервере Chef Infra, или имя машины, с которой запускается knife. Например:
node_name 'user_name'или:
node_name 'machine_name' no_proxy-
Список URL-адресов, для которых прокси не требуется, разделённых запятыми. Значение по умолчанию:
nil. Например:no_proxy 'localhost, 10.0.1.35, *.example.com, *.dev.example.com' ssh_agent_signing-
Новое в 14.2 Используйте
ssh-agentдля аутентификации. При использовании этой опции укажите расположение открытого ключа вclient_key. Значение по умолчанию:false. Убедитесь, что открытый ключ находится в формате PKCS#1. Вы можете преобразовать открытый ключ OpenSSH с помощьюssh-keygen. Например:ssh-keygen -f key.pub -e -m pem > key.pem ssh_timeoutВремя ожидания подключения SSH (в секундах) перед сбросом.
ssl_verify_mode-
Установите режим проверки для HTTPS-запросов.
- Используйте
:verify_noneдля отключения проверки сертификатов SSL. - Используйте
:verify_peerдля проверки всех сертификатов SSL, включая подключения к серверу Chef Infra, подключения к S3 и любые URL-адреса HTTPS-ресурса remote_file, используемые при работе Chef Infra Client. Это рекомендуемое значение.
В зависимости от конфигурации OpenSSL, может потребоваться указать
ssl_ca_path. Значение по умолчанию::verify_peer. - Используйте
syntax_check_cache_pathВсе файлы в кулинарной книге должны содержать корректный синтаксис Ruby. Используйте эту настройку для указания расположения, где knife кеширует информацию о файлах, которые были проверены на корректный синтаксис Ruby.
tmux_splitРазделить окно Tmux. Значение по умолчанию:
false.validation_client_name-
Имя ключа chef-validator, используемого Chef Infra Client для доступа к серверу Chef Infra во время первоначального запуска Chef Infra Client. Например:
validation_client_name 'chef-validator' validation_key-
Расположение файла с ключом, используемым при регистрации Chef Infra Client на сервере Chef Infra. Ключ проверки подписывается с помощью
validation_client_nameдля аутентификации. Значение по умолчанию:/etc/chef/validation.pem. Например:validation_key '/etc/chef/validation.pem' verify_api_certПроверить сертификат SSL на сервере Chef Infra. При значении
true, Chef Infra Client всегда проверяет сертификат SSL. При значенииfalse, Chef Infra Client использует значениеssl_verify_modeдля определения необходимости проверки сертификата SSL. Значение по умолчанию:false.versioned_cookbooks-
Добавить версии кулинарных книг к кулинарным книгам. Установите
falseдля скрытия версий кулинарных книг:cookbooks/apache. Установитеtrueдля отображения версий кулинарных книг:cookbooks/apache-1.0.0и/илиcookbooks/apache-1.0.1. Когда это значениеtrue,knife downloadзагружает ВСЕ версии кулинарных книг, что может быть полезно, если требуется полная резервная копия данных на сервере Chef Infra.versioned_cookbooks true config_log_level-
Устанавливает значение по умолчанию для
log_levelв файле client.rb узла, который проходит bootstrap. Возможные значения::debug,:info,:warn,:errorи:fatal. Например:config_log_level :debug config_log_location-
Устанавливает значение по умолчанию для
log_locationв файле client.rb узла, который проходит bootstrap. Возможные значения:/path/to/log_location,STDOUT,STDERR,:win_evtи:syslog. Например:config_log_location "/path/to/log_location" # Please make sure that the path exists
Настройки прокси
В некоторых ситуациях прокси, используемый сервером Chef Infra, требует аутентификации. В этом случае необходимо добавить три настройки в конфигурационный файл. Какие настройки добавить, зависит от используемого протокола доступа к серверу Chef Infra: HTTP или HTTPS.
Если сервер Chef Infra настроен на использование HTTP, добавьте следующие настройки:
http_proxy-
Сервер прокси для HTTP-соединений. Значение по умолчанию:
nil. Например:http_proxy 'http://proxy.example.com:3128' http_proxy_userИмя пользователя сервера прокси при использовании HTTP-соединения. Значение по умолчанию:
nil.http_proxy_passПароль сервера прокси при использовании HTTP-соединения. Значение по умолчанию:
nil.
Если сервер Chef Infra настроен на использование HTTPS (например, размещённый сервер Chef Infra), добавьте следующие настройки:
https_proxyПрокси-сервер для HTTPS-соединений. (Сервер Chef Infra использует HTTPS-соединение.) Значение по умолчанию:
nil.https_proxy_userИмя пользователя для прокси-сервера, когда прокси-сервер использует HTTPS-соединение. Значение по умолчанию:
nil.https_proxy_passПароль для прокси-сервера, когда прокси-сервер использует HTTPS-соединение. Значение по умолчанию:
nil.
Используйте следующие настройки для указания URL-адресов, которым не нужен прокси:
no_proxyСписок URL-адресов, которым не нужен прокси, разделённый запятыми. Значение по умолчанию:
nil.
.d Директории
Chef Infra Client поддерживает чтение нескольких конфигурационных файлов, помещая их в .d директорию конфигурации. Например: /etc/chef/client.d. Все файлы, оканчивающиеся на .rb в .d директории, загружаются; другие не-.rb файлы игнорируются.
.d директории могут существовать в любом месте, где присутствуют файлы client.rb, config.rb, или solo.rb, такие как:
/etc/chef/client.d/etc/chef/config.d~/chef/solo.d
(Нет поддержки knife.d директории; используйте config.d вместо неё.)
Например, при использовании knife, будут загружены следующие конфигурационные файлы:
~/.chef/config.rb~/.chef/config.d/company_settings.rb~/.chef/config.d/ec2_configuration.rb~/.chef/config.d/old_settings.rb.bak
Файл old_settings.rb.bak игнорируется, так как он не является конфигурационным файлом. Файлы config.rb, company_settings.rb, и ec2_configuration объединяются как один конфигурационный файл.
Примечание
Если в директории .d существуют несколько конфигурационных файлов, убедитесь, что одна и та же настройка имеет одинаковое значение во всех файлах.
Дополнительные настройки
Помимо значений по умолчанию в файле config.rb, можно добавить другие настройки, специфичные для подкоманд:
- Значение, переданное через командную строку
- Значение, содержащееся в файле
config.rb - Значение по умолчанию
Значение, переданное через командную строку, переопределит значение в файле config.rb; значение в файле config.rb переопределит значение по умолчанию. Перед добавлением настроек в файл config.rb:
- Проверьте настройки, ознакомившись с документацией для подкоманд knife и/или плагинов knife
- Проверьте целесообразность добавления этих настроек для вашей организации
Также обратите внимание на то, что:
- Настраиваемые плагины могут быть настроены для использования тех же настроек, что и основные подкоманды knife
- Многие из этих настроек используются более чем одной подкомандой и/или плагином
- Некоторые настройки включены только потому, что knife проверяет значение в файле
config.rb
Чтобы добавить настройки в файл config.rb используйте следующий синтаксис:
knife[:setting_name] = value
где value может потребовать кавычки (' ‘), если это строковое значение. Например:
knife[:ssh_port] = 22
knife[:bootstrap_template] = 'ubuntu14.04-gems'
knife[:bootstrap_version] = ''
knife[:bootstrap_proxy] = ''
Некоторые из дополнительных config.rb настроек используются часто, например, шаблонный файл, используемый в операции bootstrap. Частота использования любой опции зависит от организации, поэтому, хотя следующие настройки часто добавляются в файл config.rb, они могут не быть подходящими для каждой организации:
knife[:bootstrap_proxy]Прокси-сервер для узла, являющегося целью операции bootstrap.
knife[:bootstrap_template]Путь к файлу шаблона, который будет использоваться во время операции bootstrap.
knife[:bootstrap_version]Версия Chef Infra Client для установки.
knife[:editor]Редактор $EDITOR, используемый для всех интерактивных команд.
knife[:ssh_gateway]SSH туннель или шлюз, используемый для выполнения действия bootstrap на машине, недоступной из рабочей станции. Добавление этой настройки может быть полезно, когда пользователь не может напрямую подключиться по SSH к хосту.
knife[:ssh_port]Порт SSH.
Другие настройки, связанные с SSH, которые иногда полезно добавить в файл config.rb:
knife[:forward_agent]Включить пересылку агента SSH.
knife[:ssh_attribute]Атрибут, используемый при открытии SSH-соединения.
knife[:ssh_password]Пароль SSH. Это можно использовать для передачи пароля непосредственно в командной строке. Если этот параметр не указан (и требуется пароль), knife запросит пароль.
knife[:ssh_user]Имя пользователя SSH.
Некоторые организации предпочитают использовать один секрет и файл секрета для всех мешков данных, вместо уникального секрета и файла секрета для каждого мешка данных. Чтобы использовать один секрет и файл секрета для всех мешков данных, добавьте следующее в config.rb:
knife[:secret]Ключ шифрования, используемый для значений, содержащихся в элементе мешка данных.
knife[:secret_file]Путь к файлу, содержащему ключ шифрования.
Некоторые настройки лучше оставить Ohai, который получит значение в начале выполнения Chef Infra Client:
knife[:server_name]То же, что и node_name. Рекомендуется позволить Ohai собирать это значение во время каждого выполнения Chef Infra Client.
node_nameСм. описание выше для этой настройки.
Предупреждение
config.rb. Многие из этих дополнительных настроек не следует добавлять в файл config.rb. Причины могут различаться. Например, использование --yes в качестве значения по умолчанию в файле config.rb заставит knife всегда предполагать, что «Y» — это ответ на любой запрос, что может привести к нежелательным результатам. Другие настройки, такие как --hide-by-mins (используется только с подкомандой knife status) или --bare-directories (используется только с подкомандой knife list) вероятно, не используются достаточно часто (и не так, как нужно), чтобы оправдывать их добавление в файл config.rb. В общем случае, если дополнительные настройки не указаны в главной теме config.rbраздела, добавляйте настройки только после тщательного обдумывания. Не используйте дополнительные настройки в рабочей среде, пока производительность настройки не будет подтверждена в безопасной тестовой среде.
© 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/config_rb/