Настройки chef-server.rb
/etc/opscode/chef-server.rb содержит все настройки конфигурации Chef Infra Server, отличные от значений по умолчанию. Значения по умолчанию встроены в конфигурацию Chef Infra Server и должны быть добавлены в файл chef-server.rb для применения отличных от значений по умолчанию. Эти настройки конфигурации обрабатываются при выполнении команды chef-server-ctl reconfigure. Файл chef-server.rb — это файл на языке Ruby, что означает, что в нём можно использовать условные операторы. Использование условных операторов
Используйте оператор case для применения различных значений в зависимости от того, находится ли настройка на серверах фронта или бэка. Добавьте код в файл конфигурации сервера, подобно следующему:
role_name = ChefServer['servers'][node['fqdn']]['role']
case role_name
when 'backend'
# backend-specific configuration here
when 'frontend'
# frontend-specific configuration here
end
Рекомендованные настройки
Ниже приведены настройки, которые обычно добавляются в файл конфигурации сервера (знак равенства для установки значения не нужен):
api_fqdn-
FQDN сервера Chef Infra Server. Эта настройка по умолчанию не включена в файл конфигурации сервера. При добавлении значение должно быть равно FQDN для URI службы, используемой сервером Chef Infra Server. Например:
api_fqdn "chef.example.com". bootstrap-
Значение по умолчанию:
true. ip_version-
Используется для установки версии IP:
"ipv4"или"ipv6". При установке в"ipv6", API прослушивает IPv6, а службы фронта и бэка обмениваются данными по IPv6 при использовании конфигурации высокой доступности. При настройке IPv6 в конфигурации высокой доступности убедитесь, что вы установили маску сети для атрибута IPv6backend_vip. Значение по умолчанию:"ipv4". notification_email-
Значение по умолчанию:
info@example.com.
Протоколы SSL NGINX
Следующие настройки часто изменяются от значений по умолчанию в рамках настройки службы nginx и для настройки сервера Chef Infra Server на использование SSL-сертификатов:
nginx['ssl_certificate']-
SSL-сертификат, используемый для проверки связи по HTTPS. Значение по умолчанию:
nil. nginx['ssl_certificate_key']-
Ключ сертификата, используемый для SSL-связи. Значение по умолчанию:
nil. nginx['ssl_ciphers']-
Список поддерживаемых наборов шифров, используемых для установления защищенного соединения. Для предпочтения AES256 с ECDHE forward security, удалите префикс
RC4-SHA:RC4-MD5:RC4:RSA. Например:nginx['ssl_ciphers'] = "HIGH:MEDIUM:!LOW:!kEDH: \ !aNULL:!ADH:!eNULL:!EXP: \ !SSLv2:!SEED:!CAMELLIA: \ !PSK" nginx['ssl_protocols']-
Версии протоколов SSL, включенные для API сервера Chef Infra Server. Начиная с Chef Infra Server 14.3, это значение по умолчанию
'TLSv1.2'для повышения безопасности. Предыдущие версии по умолчанию'TLSv1 TLSv1.1 TLSv1.2', что допускало менее безопасные SSL-соединения. TLS 1.2 поддерживается Chef Infra Client 10.16.4 и новее на Linux, Unix и macOS, и Chef Infra Client 12.8 и новее на Windows. Если необходимо поддерживать эти устаревшие версии Chef Infra Client, установите это значение в'TLSv1.1 TLSv1.2'.nginx['ssl_protocols'] = 'TLSv1.2'
Примечание
Дополнительную информацию о значениях, используемых с настройками nginx['ssl_ciphers'] и nginx['ssl_protocols'], см. на странице https://www.openssl.org/docs/man1.0.2/man1/ciphers.html.
Например, после копирования файлов SSL-сертификатов на сервер Chef Infra Server, обновите настройки nginx['ssl_certificate'] и nginx['ssl_certificate_key'] для указания путей к этим файлам, а затем (необязательно) обновите настройки nginx['ssl_ciphers'] и nginx['ssl_protocols'] для отражения желаемого уровня надёжности сервера Chef Infra Server:
nginx['ssl_certificate'] = '/etc/pki/tls/private/name.of.pem'
nginx['ssl_certificate_key'] = '/etc/pki/tls/private/name.of.key'
nginx['ssl_ciphers'] = 'HIGH:MEDIUM:!LOW:!kEDH:!aNULL:!ADH:!eNULL:!EXP:!SSLv2:!SEED:!CAMELLIA:!PSK'
nginx['ssl_protocols'] = 'TLSv1.2'
Дополнительные настройки
Следующие настройки часто используются для повышения производительности сервера Chef Infra Server в крупных установках.
Примечание
При внесении изменений в файл chef-server.rb сервер Chef Infra Server необходимо перенастроить, выполнив следующую команду:
chef-server-ctl reconfigure
Примечание
bookshelf
Следующая настройка часто изменяется от значения по умолчанию в рамках настройки службы bookshelf:
bookshelf['vip']-
Виртуальный IP-адрес. Значение по умолчанию:
node['fqdn'].
Предупреждение
opscode-account
Следующая настройка часто изменяется от значения по умолчанию в рамках настройки службы opscode-account:
opscode_account['worker_processes']-
Количество разрешённых процессов-работников. Это значение следует увеличить, если запросы к службе opscode-account завершаются по таймауту, но только если на машинах фронта доступны ЦП и ОЗУ. Значение по умолчанию:
4.
opscode-erchef
Следующие настройки часто изменяются от значения по умолчанию в рамках настройки службы opscode-erchef:
opscode_erchef['db_pool_size']-
Количество открытых подключений к PostgreSQL, поддерживаемых службой. Если ошибки указывают на то, что у службы opscode-erchef закончились подключения, попробуйте увеличить настройку
postgresql['max_connections']. Если ошибки сохраняются, увеличьте это значение (небольшими шагами) и также увеличьте значение дляpostgresql['max_connections']. Значение по умолчанию:20. opscode_erchef['s3_url_ttl']-
Время (в секундах) до истечения срока действия подключений к серверу. Если выполнение Chef Infra Client завершается по таймауту, увеличьте эту настройку до
3600, а затем отрегулируйте её, если необходимо. Значение по умолчанию:900. opscode_erchef['strict_search_result_acls']-
Используется для указания того, что результаты поиска возвращают только объекты, к которым у актора (пользователя, клиента и т. д.) есть доступ для чтения, как определено настройками ACL. Это влияет на все поиски. При
true, производительность консоли управления Chef может повыситься, так как она позволяет пропускать избыточные проверки ACL. Чтобы убедиться, что консоль управления Chef настроена правильно, после применения этой настройки с помощью командыchef-server-ctl reconfigureвыполнитеchef-manage-ctl reconfigure, чтобы убедиться, что консоль управления Chef также получила настройку. Значение по умолчанию:false.
Предупреждение
При true, opscode_erchef['strict_search_result_acls'] влияет на все результаты поиска, и любой актёр (пользователь, клиент и т. д.), у которого нет доступа для чтения к результатам поиска, не сможет их просмотреть. Например, это может повлиять на результаты поиска, возвращённые во время выполнения Chef Infra Client, если у Chef Infra Client нет разрешения на чтение информации.
Сборщик данных
Следующие настройки часто изменяются от значения по умолчанию в рамках настройки приложения data_collector opscode-erchef:
data_collector['http_max_count']-
Максимальное количество процессов-работников для пула подключений HTTP, используемого сборщиком данных. Если ошибки указывают на то, что приложение opscode-erchef вышло из HTTP-соединений для data_collector, увеличьте это значение. Значение по умолчанию: 100.
postgresql
Следующая настройка часто изменяется от значения по умолчанию в рамках настройки службы postgresql:
postgresql['max_connections']-
Максимальное количество разрешённых одновременных подключений. Это значение следует настраивать только при изменении значения
opscode_erchef['db_pool_size']используемого службой opscode-erchef. Значение по умолчанию:350. Если в кластере более двух машин фронта, значение настройкиpostgresql['max_connections']следует увеличить. Увеличенное значение зависит от количества машин фронта, но также и от количества работающих на каждой из этих машин служб.- Каждая машина фронта всегда запускает службы oc_bifrost и opscode-erchef.
- Дополнительный модуль Reporting добавляет службу reporting.
Каждая из этих служб требует 25 подключений сверх значения по умолчанию.
Воспользуйтесь следующей формулой для определения того, какое увеличенное значение следует использовать:
new_value = current_value + [ (# of front end machines - 2) * (25 * # of services) ]Например, если текущее значение 350, есть четыре машины фронта и установлены все дополнительные модули, то формула выглядит так:
550 = 350 + [(4 - 2) * (25 * 4)]
postgresql['sslmode']-
Режим шифрования SSL между сервером Chef Infra Server и PostgreSQL. Допустимые значения:
'disable'и'require'. Значение по умолчанию:'disable'.
Примечание: Вы просматриваете документацию для более старой версии Chef Infra Server.
/etc/opscode/chef-server.rb содержит все настройки конфигурации, отличные от значений по умолчанию, используемые Chef Infra Server. Значения по умолчанию встроены в конфигурацию Chef Infra Server, и их следует добавлять в файл chef-server.rb только для применения отличных от значений по умолчанию. Эти параметры конфигурации обрабатываются при выполнении команды chef-server-ctl reconfigure. Файл chef-server.rb — это файл на языке Ruby, что означает, что в нём можно использовать условные операторы. Использование условий
Используйте оператор case для применения различных значений в зависимости от того, находятся ли настройки на серверах фронта или бэкенда. Добавьте код в файл конфигурации сервера, аналогичный следующему:
role_name = ChefServer['servers'][node['fqdn']]['role']
case role_name
when 'backend'
# backend-specific configuration here
when 'frontend'
# frontend-specific configuration here
end
Рекомендуемые настройки
Ниже перечислены настройки, которые обычно добавляются в файл конфигурации сервера (не нужно использовать знак равенства для задания значения):
api_fqdn-
FQDN сервера Chef Infra Server. Эта настройка по умолчанию не включена в файл конфигурации сервера. При добавлении её значение должно быть равно FQDN URI службы, используемой сервером Chef Infra Server. Например:
api_fqdn "chef.example.com". bootstrap-
Значение по умолчанию:
true. ip_version-
Используется для задания версии IP:
"ipv4"или"ipv6". При установке значения"ipv6", API прослушивает IPv6, и службы фронта и бэкенда взаимодействуют через IPv6 при использовании конфигурации высокой доступности. При настройке для IPv6 в конфигурации высокой доступности убедитесь, что вы установили маску сети для атрибута IPv6backend_vip. Значение по умолчанию:"ipv4". notification_email-
Значение по умолчанию:
info@example.com.
Протоколы SSL NGINX
Ниже перечислены настройки, которые часто изменяют из значений по умолчанию для настройки службы nginx и для настройки сервера Chef Infra Server для использования SSL-сертификатов:
nginx['ssl_certificate']-
SSL-сертификат, используемый для проверки связи по протоколу HTTPS. Значение по умолчанию:
nil. nginx['ssl_certificate_key']-
Ключ сертификата, используемый для SSL-связи. Значение по умолчанию:
nil. nginx['ssl_ciphers']-
Список поддерживаемых наборов шифров, используемых для создания безопасного соединения. Чтобы использовать AES256 с защитой вперёд по умолчанию (EECDHE), удалите префикс
RC4-SHA:RC4-MD5:RC4:RSA. Например:nginx['ssl_ciphers'] = "HIGH:MEDIUM:!LOW:!kEDH: \ !aNULL:!ADH:!eNULL:!EXP: \ !SSLv2:!SEED:!CAMELLIA: \ !PSK" nginx['ssl_protocols']-
Версии SSL-протоколов, разрешённые для API Chef Infra Server. Для повышения безопасности установите это значение на
'TLSv1.2'. TLS 1.2 поддерживается Chef Infra Client 10.16.4 и более поздними версиями на Linux, Unix и macOS, а также на Chef Infra Client 12.8 и более поздними версиями на Windows. Если требуется поддержка более старых устаревших версий Chef Infra Client, установите это значение на'TLSv1.1 TLSv1.2'.nginx['ssl_protocols'] = 'TLSv1.2'
Примечание
Дополнительную информацию о значениях, используемых с настройками nginx['ssl_ciphers'] и nginx['ssl_protocols'], см. на странице https://www.openssl.org/docs/man1.0.2/man1/ciphers.html.
Например, после копирования файлов SSL-сертификатов на сервер Chef Infra Server, обновите настройки nginx['ssl_certificate'] и nginx['ssl_certificate_key'] для указания путей к этим файлам, а затем (необязательно) обновите настройки nginx['ssl_ciphers'] и nginx['ssl_protocols'] для отражения желаемого уровня надёжности для сервера Chef Infra Server:
nginx['ssl_certificate'] = '/etc/pki/tls/private/name.of.pem'
nginx['ssl_certificate_key'] = '/etc/pki/tls/private/name.of.key'
nginx['ssl_ciphers'] = 'HIGH:MEDIUM:!LOW:!kEDH:!aNULL:!ADH:!eNULL:!EXP:!SSLv2:!SEED:!CAMELLIA:!PSK'
nginx['ssl_protocols'] = 'TLSv1.2'
Дополнительные настройки
Следующие настройки часто используются для настройки производительности сервера Chef Infra Server в крупных установках.
Примечание
При внесении изменений в файл chef-server.rb необходимо перезапустить Chef Infra Server, выполнив следующую команду:
chef-server-ctl reconfigure
Примечание
bookshelf
Следующая настройка часто изменяется от значения по умолчанию в рамках оптимизации работы службы bookshelf:
bookshelf['vip']-
Виртуальный IP-адрес. Значение по умолчанию:
node['fqdn'].
Предупреждение
opscode-account
Следующая настройка часто изменяется от значения по умолчанию в рамках оптимизации работы службы opscode-account:
opscode_account['worker_processes']-
Количество разрешённых процессов-работников. Это значение следует увеличить, если запросы к службе opscode-account завершаются с ошибкой по таймауту, но только если у машин фронта достаточно ЦП и ОЗУ. Значение по умолчанию:
4.
opscode-erchef
Следующие настройки часто изменяются от значения по умолчанию в рамках оптимизации работы службы opscode-erchef:
opscode_erchef['db_pool_size']-
Количество открытых подключений к PostgreSQL, поддерживаемых службой. Если ошибки указывают на то, что служба opscode-erchef исчерпала подключения, попробуйте увеличить настройку
postgresql['max_connections']. Если ошибки сохраняются, увеличьте это значение (небольшими приращениями) и также увеличьте значение дляpostgresql['max_connections']. Значение по умолчанию:20. opscode_erchef['s3_url_ttl']-
Время (в секундах) до истечения срока действия подключений к серверу. Если выполнение Chef Infra Client завершается по таймауту, увеличьте эту настройку до
3600, а затем скорректируйте её, если необходимо. Значение по умолчанию:900. opscode_erchef['strict_search_result_acls']-
Используется для указания того, что результаты поиска должны возвращать только объекты, к которым актёр (пользователь, клиент и т.д.) имеет доступ для чтения, как определено настройками ACL. Это влияет на все поиски. Когда
true, производительность консоли управления Chef может повыситься, поскольку она позволяет консоли управления Chef пропустить избыточные проверки ACL. Для обеспечения правильной настройки консоли управления Chef после применения этой настройки с помощьюchef-server-ctl reconfigureвыполнитеchef-manage-ctl reconfigure, чтобы убедиться, что консоль управления Chef также применяет настройку. Значение по умолчанию:false.
Предупреждение
Когда true, opscode_erchef['strict_search_result_acls'] влияет на все результаты поиска, и любой актёр (пользователь, клиент и т.д.), у которого нет доступа для чтения к результату поиска, не сможет его просмотреть. Например, это может повлиять на результаты поиска, возвращаемые во время выполнения Chef Infra Client, если у Chef Infra Client нет разрешения на чтение информации.
Сборщик данных
Следующие настройки часто изменяются от значения по умолчанию в рамках оптимизации работы приложения data_collector opscode-erchef:
data_collector['http_max_count']-
Максимальное количество процессов-работников для пула подключений HTTP, используемого сборщиком данных. Если ошибки указывают на то, что приложение opscode-erchef исчерпало подключения HTTP для data_collector, увеличьте это значение. Значение по умолчанию: 100.
opscode-expander
Следующая настройка часто изменяется от значения по умолчанию в рамках оптимизации работы службы opscode-expander:
opscode_expander['nodes']-
Количество разрешённых процессов-работников. Служба opscode-expander работает на бэкенде и предоставляет данные службе opscode-solr, которая создаёт и поддерживает данные поиска, используемые сервером Chef Infra Server. Дополнительная память может потребоваться процессам-работникам в зависимости от частоты и объёма запусков Chef Infra Client в организации, но только если у машин бэкенда достаточно ЦП и ОЗУ. Значение по умолчанию:
2.
opscode-solr4
В следующих разделах описаны способы настройки службы opscode-solr4 для повышения производительности при больших размерах узлов, объёме доступной памяти и частоте обновлений.
Доступная память
Используйте следующую настройку конфигурации, чтобы убедиться, что Apache Solr не исчерпает память:
opscode_solr4['heap_size']-
Объем памяти (в МБ), доступный Apache Solr. Если памяти недостаточно, запросы поиска, выполняемые узлами к Apache Solr, могут завершиться неудачно. Требуемый объём памяти также зависит от количества узлов в организации, частоты запросов поиска и других характеристик, уникальных для каждой организации. В общем случае, с увеличением количества узлов увеличивается и необходимый объём памяти.
Если Apache Solr исчерпал память, в файле журнала /var/log/opscode/opscode-solr4/current будет сообщение, подобное:
SEVERE: java.lang.OutOfMemoryError: Java heap space
Значение по умолчанию для opscode_solr4['heap_size'] должно подойти для многих организаций, особенно для тех, у которых меньше 25 узлов. Для организаций с более чем 25 узлами установите это значение на 25% от системной памяти или 1024, что меньше. Для очень больших конфигураций увеличьте это значение до 25% от системной памяти или 4096, что меньше. Это значение не должно превышать 8192.
Большие размеры узлов
Максимальная длина поля для Apache Solr должна быть больше, чем ожидаемый размер файлов объектов узлов, чтобы они могли быть успешно добавлены в индекс поиска. Если файл объекта узла больше максимальной длины поля, объект узла будет индексирован до максимума, но часть файла, выходящая за пределы этого ограничения, не будет индексирована. В этом случае может показаться, что узлы исчезают из индекса поиска. Чтобы обеспечить правильную индексацию больших файлов объектов узлов, проверьте следующие параметры конфигурации:
nginx['client_max_body_size']-
Максимальный размер тела запроса клиента, как указано в заголовке запроса
Content-Length. Когда максимальный размер тела запроса больше этого значения, возвращается ошибка413 Request Entity Too Large. Значение по умолчанию:250m.
и
opscode_erchef['max_request_size']-
Если размер тела запроса больше этого значения, возвращается ошибка 413 Request Entity Too Large. Значение по умолчанию:
2000000.
чтобы убедиться, что эти параметры не являются причиной неполной индексации, а затем обновите следующий параметр, чтобы его значение было больше ожидаемых размеров файлов объектов узлов:
opscode_solr4['max_field_length']-
Максимальная длина поля (в количестве токенов/терминов). Если длина поля превышает это значение, Apache Solr может не завершить создание индекса. Значение по умолчанию:
100000(увеличено по сравнению со значением по умолчанию Apache Solr10000).
Используйте команду wc для получения количества байтов большого файла объекта узла. Например:
wc -c NODE_NAME.json
а затем убедитесь, что есть буфер, превышающий это значение. Например, проверьте размер самого большого файла объекта узла:
wc -c nodebsp2016.json
что возвращает 154516. Обновите параметр opscode_solr4['max_field_length'], чтобы его значение было больше возвращенного значения. Например: 180000.
Если у вас нет файла объекта узла, вы можете получить приблизительный размер данных узла, выполнив следующую команду на узле.
ohai | wc -c
Частота обновлений
В конце каждого выполнения Chef Infra Client объект узла сохраняется на сервере Chef Infra. С сервера Chef Infra каждый объект узла добавляется в индекс поиска SOLR. Этот процесс асинхронный. По умолчанию объекты узлов добавляются в индекс поиска каждые 60 секунд или каждые 1000 объектов узлов, в зависимости от того, что произойдет раньше.
При добавлении данных в индекс Apache Solr все входящие обновления блокируются. Если интервал между обновлениями слишком короткий, скорость запросов на обновления может превышать скорость фактического добавления объектов.
Используйте следующий параметр конфигурации для улучшения производительности индексации объектов узлов:
opscode_solr4['commit_interval']-
Частота (в секундах) добавления объектов узлов в индекс поиска Apache Solr. Значение по умолчанию:
60000(каждые 60 секунд). opscode_solr4['max_commit_docs']-
Частота (в документах) добавления объектов узлов в индекс поиска Apache Solr. Значение по умолчанию:
1000(каждые 1000 документов).
postgresql
Следующий параметр часто изменяется от значения по умолчанию в рамках настройки службы postgresql:
postgresql['max_connections']-
Максимальное количество разрешенных одновременных подключений. Это значение следует настраивать только при изменении значения
opscode_erchef['db_pool_size']используемого службой opscode-erchef. Значение по умолчанию:350. Если в кластере более двух фронт-эндовских машин, значение параметраpostgresql['max_connections']следует увеличить. Увеличенное значение зависит от количества машин в фронт-энде, а также от количества служб, работающих на каждой из этих машин.- Каждая фронт-эндовская машина всегда запускает службы oc_bifrost и opscode-erchef.
- Дополнение Reporting добавляет службу reporting.
Каждая из этих служб требует 25 подключений, помимо значения по умолчанию.
Используйте следующую формулу для определения, какое увеличенное значение следует использовать:
new_value = current_value + [ (# of front end machines - 2) * (25 * # of services) ]Например, если текущее значение равно 350, есть четыре фронт-эндовских машины и установлены все дополнения, то формула выглядит следующим образом:
550 = 350 + [(4 - 2) * (25 * 4)]
postgresql['sslmode']-
Режим шифрования SSL между сервером Chef Infra и PostgreSQL. Допустимые значения —
'disable'и'require'. Значение по умолчанию:'disable'.
© 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/server/config_rb_server/