Spec-Zone.ru › Chef 17

Обзор сервера Chef Infra

[править на GitHub]

Сервер Chef Infra Server служит центром для данных конфигурации. Сервер Chef Infra Server хранит кулинарии, политики, применяемые к узлам, и метаданные, описывающие каждый зарегистрированный узел, управляемый клиентом Chef Infra Client. Узлы используют Chef Infra Client для запроса у сервера Chef Infra Server деталей конфигурации, таких как рецепты, шаблоны и распределение файлов. Клиент Chef Infra Client выполняет как можно больше работы по конфигурации на самих узлах (а не на сервере Chef Infra Server). Такой масштабируемый подход распределяет усилия по конфигурации по всей организации.

API сервера Chef Infra Server написан на языке Erlang, который отлично подходит для критически важных задач корпоративного уровня, таких как конкурентность, отказоустойчивость и распределённые среды. Сервер Chef Infra Server может масштабироваться до размеров любой корпорации.

Примечание

Конфигурирование сервера Chef Infra Server можно выполнить через файл /etc/opscode/chef-server.rb. При каждом изменении этого файла необходимо выполнить команду chef-server-ctl reconfigure, чтобы применить изменения. Дополнительную информацию см. в руководстве Настройки сервера Chef Infra Server.

Компоненты сервера

На следующей схеме показаны различные компоненты развертывания сервера Chef Infra Server и их взаимосвязь.

Diagram of Chef Infra Server deployment
Компонент Описание
Клиенты К серверу Chef Infra Server в основном обращаются узлы, управляемые Chef, во время выполнения Chef Infra Client. Также к нему обращаются лица, которые поддерживают кулинарии и политики, хранящиеся на сервере Chef Infra Server, обычно со стационарных рабочих станций. И также индивидуальные пользователи с учетными данными для компонентов сервера Chef Infra Server, например, консоли управления Chef.
Балансировщик нагрузки Nginx — это открытый исходный код HTTP- и обратного прокси-сервера, который используется в качестве балансировщика нагрузки для сервера Chef Infra Server. Все запросы к API сервера Chef Infra Server маршрутизируются через Nginx.
Chef Manage Chef Manage — веб-интерфейс для сервера Chef Infra Server, который использует API сервера Chef Infra Server для всех коммуникаций с сервером Chef Infra Server.
Сервер Chef Infra Server

Erchef — полная переработка основного API сервера Chef Infra Server, что обеспечивает более высокую скорость и масштабируемость по сравнению с предыдущими версиями. Сам API по-прежнему совместим с оригинальным сервером Chef Infra Server на базе Ruby, что означает, что кулинарии и рецепты, написанные для сервера Chef Infra Server на базе Ruby, будут по-прежнему работать на сервере Chef Infra Server на базе Erlang. Клиент Chef Infra Client по-прежнему написан на языке Ruby.

Примечание

Несмотря на то, что сервер Chef Infra Server написан на языке Erlang, использование Erlang не является обязательным для работы с Chef Infra.

Bookshelf

Bookshelf используется для хранения содержимого кулинарий — файлов, шаблонов и т.д. — которые были загружены на сервер Chef Infra Server в рамках версии кулинарии. Содержимое кулинарии хранится по контрольной сумме содержимого. Если две разные кулинарии или разные версии одной и той же кулинарии включают один и тот же файл или шаблон, Bookshelf сохранит этот файл только один раз. Содержимое кулинарии, управляемое Bookshelf, хранится в плоских файлах и отделено от репозиториев сервера Chef Infra Server и индексного поиска.

Все кулинарии хранятся в отдельном репозитории.

Сообщения

chef-elasticsearch оборачивает Elastisearch и предоставляет его REST API для индексирования и поиска. Все сообщения добавляются в отдельный репозиторий индексного поиска.

PostgreSQL PostgreSQL — это хранилище данных для сервера Chef Infra Server.

Внешние кулинарии

На следующей схеме показаны конкретные изменения, происходящие при хранении кулинарий во внешнем расположении, таком как Amazon Simple Storage Service (S3).

image

В следующей таблице описаны компоненты, которые отличаются от стандартной конфигурации сервера Chef Infra Server при хранении кулинарий во внешнем расположении:

Компонент Описание
Клиенты Сервер Chef Infra Server будет предоставлять подписанные URL-адреса для запросов кулинарий, поступающих от различных клиентов (пользователи, запросы knife и из клиента Chef Infra Client, установленного на узлах, управляемых Chef Infra).
Балансировщик нагрузки Подписанные URL-адреса для кулинарий указываются сюда, а затем, по необходимости, маршрутизируются к хранилищу кулинарий.
Сервер Chef Infra Server

Erchef — полная переработка основного API сервера Chef Infra Server, что обеспечивает более высокую скорость и масштабируемость по сравнению с предыдущими версиями. Сам API по-прежнему совместим с оригинальным сервером Chef Infra Server на базе Ruby, что означает, что кулинарии и рецепты, написанные для сервера Chef Infra Server на базе Ruby, будут по-прежнему работать на сервере Chef Infra Server на базе Erlang. Клиент Chef Infra Client по-прежнему написан на языке Ruby.

Примечание

Несмотря на то, что сервер Chef Infra Server написан на языке Erlang, использование Erlang не является обязательным для работы с Chef Infra.

Amazon Simple Storage Service (S3)

Bookshelf используется для хранения содержимого кулинарий — файлов, шаблонов и т.д. — которые были загружены на сервер Chef Infra Server в рамках версии кулинарии. Содержимое кулинарии хранится по контрольной сумме содержимого. Если две разные кулинарии или разные версии одной и той же кулинарии включают один и тот же файл или шаблон, Bookshelf сохранит этот файл только один раз. Содержимое кулинарии, управляемое Bookshelf, хранится в плоских файлах и отделено от репозиториев сервера Chef Infra Server и индексного поиска.

Это представляет хранилище внешних кулинарий в Amazon Simple Storage Service (S3).

Настройки AWS

Обязательные настройки

Для настройки внешнего хранилища кулинарий с использованием Amazon Simple Storage Service (S3) установите следующие настройки конфигурации в файле chef-server.rb и выполните команду chef-server-ctl reconfigure:

Настройка Описание
bookshelf['access_key_id'] Идентификатор ключа доступа. Значение по умолчанию: сгенерировано по умолчанию. Не рекомендуется указывать это значение непосредственно в файле конфигурации. Используйте команду chef-server-ctl set-secret bookshelf access_key_id из команд управления секретами Secrets Management.
bookshelf['external_url'] Полный URL-адрес ведра S3.
bookshelf['secret_access_key'] Секретный ключ. Значение по умолчанию: сгенерировано по умолчанию. Не рекомендуется указывать это значение непосредственно в файле конфигурации. Используйте команду chef-server-ctl set-secret bookshelf secret_access_key из команд управления секретами Secrets Management.
opscode_erchef['s3_bucket'] Имя ведра Amazon Simple Storage Service (S3). Значение по умолчанию: bookshelf.
bookshelf['vip'] Виртуальный IP-адрес или имя хоста API Amazon Simple Service (S3). Значение по умолчанию: 127.0.0.1.

Пример конфигурации chef-server.rb:

bookshelf['vip'] = 's3-external-1.amazonaws.com'
bookshelf['external_url'] = 'https://s3-external-1.amazonaws.com'
bookshelf['access_key_id'] = '<ACCESS_ID>'
bookshelf['secret_access_key'] = '<ACCESS_KEY>'
opscode_erchef['s3_bucket'] = '<BUCKET_NAME>'

Дополнительные настройки

Также доступны следующие дополнительные настройки, которые могут потребовать изменения при использовании внешнего поставщика S3:

Настройка Описание
opscode_erchef['nginx_bookshelf_caching'] Используется ли Nginx для кэширования кулинарий. Когда :on, Nginx обслуживает кэшированное содержимое вместо перенаправления запроса. Значение по умолчанию: :off.
opscode_erchef['s3_parallel_ops_fanout'] Значение по умолчанию: 20.
opscode_erchef['s3_parallel_ops_timeout'] Значение по умолчанию: 5000.
opscode_erchef['s3_url_expiry_window_size'] Частота генерации уникальных URL-адресов. Это значение может быть определённым промежутком времени, например, 15m (пятнадцать минут) или процентным значением от s3_url_ttl, например, 10%. Значение по умолчанию: :off.
opscode_erchef['s3_url_ttl'] Время (в секундах) до истечения срока действия соединений с сервером. Если загрузка узлов завершается с ошибкой по таймауту, увеличьте это значение. Значение по умолчанию: 28800.

Внешний PostgreSQL

На следующей схеме показаны конкретные изменения, происходящие при настройке PostgreSQL независимо от конфигурации сервера Chef Infra Server.

image

В следующей таблице описаны компоненты в конфигурации внешнего PostgreSQL, которые отличаются от стандартной конфигурации сервера Chef Infra Server:

Компонент Описание
Сервер Chef Infra Server Файл конфигурации сервера Chef Infra Server обновляется для указания независимо настроенного набора серверов PostgreSQL.

PostgreSQL

PostgreSQL — это хранилище данных для сервера Chef Infra Server.

Это представляет независимо настроенный набор серверов, выполняющих PostgreSQL, и настроенный для работы в качестве хранилища данных для сервера Chef Infra Server.

Настройки PostgreSQL

Используйте следующие настройки конфигурации в файле chef-server.rb для настройки внешнего PostgreSQL для использования с сервером Chef Infra Server:

postgresql['db_superuser']

Требуется, когда postgresql['external'] установлено в true. Имя пользователя PostgreSQL. Пользователь должен обладать правами CREATE ROLE и CREATE DATABASE в PostgreSQL или правом SUPERUSER. У пользователя также должна быть запись в файле конфигурации аутентификации по хостам, используемом PostgreSQL (традиционно он называется pg_hba.conf). Значение по умолчанию: 'superuser_userid'.

postgresql['db_superuser_password']

Пароль для пользователя, указанного в postgresql['db_superuser']. Требуется, когда postgresql['external'] установлено в true.

db_superuser_password также можно задать с помощью chef-server-ctl set-db-superuser-password из команд Управление секретами.

postgresql['external']

Требуется. Установите значение true для запуска PostgreSQL вне сервера Chef Infra Server. Должно быть установлено только один раз на новой установке сервера Chef Infra Server до выполнения первой команды chef-server-ctl reconfigure. Если это значение задается после переконфигурации или установлено в false, любая переконфигурация сервера Chef Infra Server вернёт ошибку. Значение по умолчанию: false.

postgresql['port']

Необязательно, когда postgresql['external'] установлено в true. Порт, на котором служба должна прослушивать. Используемый порт PostgreSQL, если он не равен 5432. Значение по умолчанию: 5432.

postgresql['vip']

Требуется, когда postgresql['external'] установлено в true. Виртуальный IP-адрес. Хост для этого IP-адреса должен быть онлайн и доступен из сервера Chef Infra Server через порт, указанный в postgresql['port']. Установите это значение в IP-адрес или имя хоста машины, на которой расположен внешний PostgreSQL, когда postgresql['external'] установлено в true.

Дополнительные настройки

Следующие дополнительные настройки требуются при конфигурировании внешнего PostgreSQL в Microsoft Azure:

bookshelf['sql_connection_user']

Имя пользователя PostgreSQL в формате 'username@hostname' (например, 'bookshelf@my_postgresql.postgres.database.azure.com'), где username обычно равно значению bookshelf['sql_user'] (по умолчанию: 'bookshelf'). Эта настройка обязательна при конфигурации внешней базы данных Azure PostgreSQL в качестве сервиса. Если установлено значение nil, сервер Chef Infra Server предполагает, что база данных не находится в Azure, и подключение к PostgreSQL будет выполнено с использованием значения, указанного в bookshelf['sql_user'] Значение по умолчанию: nil.

oc_bifrost['sql_connection_user']

Имя пользователя PostgreSQL в формате 'username@hostname' (например, 'bifrost@my_postgresql.postgres.database.azure.com'), где username обычно равно значению oc_bifrost['sql_user'] (по умолчанию: 'bifrost'). Эта настройка обязательна при конфигурировании внешней базы данных Azure PostgreSQL в качестве сервиса. Если установлено значение nil, сервер Chef Infra Server предполагает, что база данных не находится в Azure, и подключение к PostgreSQL будет выполнено с использованием значения, указанного в oc_bifrost['sql_user']. Значение по умолчанию: nil.

oc_id['sql_connection_user']

Имя пользователя PostgreSQL в формате 'username@hostname' (например, 'oc_id@my_postgresql.postgres.database.azure.com'), где username обычно равно значению oc_id['sql_user'] (по умолчанию: 'od_id'). Эта настройка обязательна при конфигурировании внешней базы данных Azure PostgreSQL в качестве сервиса. Если установлено значение nil, сервер Chef Infra Server предполагает, что база данных не находится в Azure, и подключение к PostgreSQL будет выполнено с использованием значения, указанного в oc_id['sql_user']. Значение по умолчанию: nil.

opscode_erchef['sql_connection_user']

Имя пользователя PostgreSQL в формате 'username@hostname' (например, 'opscode_chef@my_postgresql.postgres.database.azure.com'), где username обычно равно значению opscode-erchef['sql_user'] (по умолчанию: 'opscode_chef'). Эта настройка обязательна при конфигурировании внешней базы данных Azure PostgreSQL в качестве сервиса. Если установлено значение nil, сервер Chef Infra Server предполагает, что база данных не находится в Azure, и подключение к PostgreSQL будет выполнено с использованием значения, указанного в opscode_erchef['sql_user']. Значение по умолчанию: nil.

postgresql['db_connection_superuser']

Имя суперпользователя PostgreSQL в формате 'username@hostname' (например, 'opscode_pgsql@my_postgresql.postgres.database.azure.com'), где username обычно равно значению postgresql['db_superuser'] с любыми дефисами, замененными на символы нижнего подчеркивания. Эта настройка обязательна при конфигурировании внешней базы данных Azure PostgreSQL в качестве сервиса. Если установлено значение nil, сервер Chef Infra Server предполагает, что база данных не находится в Azure, и подключение к PostgreSQL будет выполнено с использованием значения, указанного в postgresql['db_superuser']. Значение по умолчанию: nil.

Пример конфигурации chef-server.rb для внешнего PostgreSQL в Microsoft Azure:

topology 'standalone'
postgresql['external'] = true
postgresql['vip'] = 'my_postgresql.postgres.database.azure.com'
postgresql['db_superuser'] = 'opscode_pgsql'
postgresql['db_superuser_password'] = 'My_postgres_password1!'
postgresql['db_connection_superuser'] = 'opscode_pgsql@my_postgresql.postgres.database.azure.com'
# postgresql['sslmode']='require' # required if 'Enforce SSL connection' is enabled on Azure PostgreSQL
bookshelf['sql_connection_user'] = 'bookshelf@my_postgresql.postgres.database.azure.com'
oc_bifrost['sql_connection_user'] = 'bifrost@my_postgresql.postgres.database.azure.com'
oc_id['sql_connection_user'] = 'oc_id@my_postgresql.postgres.database.azure.com'
opscode_erchef['sql_connection_user'] = 'opscode_chef@my_postgresql.postgres.database.azure.com'

Примечание

См. список сообщений об ошибках, которые могут появляться при конфигурировании сервера Chef Infra Server для использования удалённого сервера PostgreSQL.

Настройки Bookshelf

В случаях, когда кулинарные книги должны храниться в SQL-хранилище, например, в конфигурации с высокой доступностью, необходимо установить storage_type в :sql:

bookshelf['storage_type'] = :sql

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API