Обзор конфигурации Sage
Sage поставляется с готовой конфигурацией, управляемой ролями и плейбуками Ansible. Конфигурация определяет, на каких хостах и каким образом развертываются компоненты системы, какие параметры при этом используются и какие ресурсы выделяются каждому компоненту.
Что входит в конфигурацию
Конфигурация Sage хранится в каталоге ansible/ на контрольном хосте и состоит из двух частей:
- инвентарь — файл
hosts.yml; - конфигурационные файлы в формате YAML.
Конфигурация может быть организована в одном из двух форматов:
clans/<clan>/<env>/<dc>/— для пилотного тестирования на флейворах 1VM и 3VM;inventories/<env>/— для продуктивного внедрения и установки в трех и более дата-центрах.
Принципиальное отличие форматов в том, как они используют Ansible Inventory.
Форматы каталога
Структура clans/ — специфичный формат для флейворов Sage. Первые три сегмента пути соответствуют собственным обязательным переменным, значения которых определяют расположение конфигурации в дереве каталогов:
sage_clan— название конфигурации;sage_env— окружение;sage_datacenter— дата-центр.
В шаблоне для флейвора 3VM этой схеме соответствует путь /example/prod/3vm/. Каталог clans/example скачивается в процессе установки Sage на этапе подготовки окружения.
ansible/clans/
└── example/ # Конфигурация example
└── prod/ # Окружение prod
└── 3vm/ # Флейвор 3VM
├── hosts.yml # Инвентарь
└── group_vars/
└── sage/ # Директория с конфигурационными файлами
├── sage.yml # Базовая конфигурация
├── _limits.yml # Лимиты ресурсов флейвора
└── _secrets.yml # Секреты (Ansible Vault)
Структура inventories/<env>/ представляет собой стандартный Ansible Inventory и рекомендуется для продуктивной загрузки. Она также применяется, когда Sage развернут в трех или более дата-центрах.
ansible/inventories/
└── prod/ # Окружение prod
├── hosts.yml # Инвентарь со списком всех хостов
└── group_vars/
├── dc1/ # Переменные дата-центра dc1
├── dc2/ # Переменные дата-центра dc2
└── sage/ # Общие переменные
В структуре inventories дата-центры задаются Ansible-группами, а не вложенными каталогами.
- Переменные каждого дата-центра выносятся в собственную директорию
group_vars/<dc>/. - Переменные, общие для всех дата-центров, определяются один раз в
group_vars/sage/и не дублируются по дата-центрам.
Вы можете редактировать шаблоны из clans/example, чтобы потестировать Sage, или развернуть собственную конфигурацию.
Подробнее о пе реходе между форматами см. в Upgrade Notes 1.12.
Инвентарь
Ansible Inventory — файл hosts.yml, содержащий список хостов, на которых разворачиваются компоненты Sage. Его расположение зависит от выбранной структуры конфигурации:
-
Для формата
clans/—clans/<clan>/<env>/<dc>/hosts.yml. -
Для формата
inventories/—inventories/<env>/hosts.yml. Каждый хост должен принадлежать только одной группе дата-центра.
Конфигурационные файлы
Конфигурационные файлы в формате YAML содержат переменные для управления компонентами Sage. Каждая переменная имеет имя и значение.
Директория group_vars — стандартный механизм Ansible для групповых переменных. Расположение конфигурационных файлов зависит от выбранной структуры:
-
Для формата
clans/—clans/<clan>/<env>/<dc>/group_vars/sage/. -
Для формата
inventories/:inventories/<env>/group_vars/sage/— общие переменные;inventories/<env>/group_vars/<dc>/— переменные дата-центра.
Организация конфигурационных файлов
Расположение и состав конфигурационных файлов подчинены принципу строгой изоляции сред: каждый каталог окружения содержит полную конфигурацию, независимую от других окружений. Переменные не наследуются между окружениями — для каждого нового, например, dev и test, создавайте отдельный каталог с полной конфигурацией.
В остальном порядок организации конфигурационных файлов произвольный: можно разместить все переменные в sage.yml или разбить конфигурацию на несколько логических файлов — по компонентам, типу настроек или пайплайну.
Для флейворов 1VM и 3VM по умолчанию доступны три файла:
sage.yml— базовый набор переменных, без которых установка не запустится;_limits.yml— лимиты ресурсов для контейнеров этого флейвора;_secrets.yml— секреты (пароли, токены), зашифрованные с помощью Ansible Vault. Подробнее см. в статье Шифрование секретов.
Примеры других конфигурационных файлов:
_versions.yml— переопределение версий компонентов;_log_levels.yml— ограничение по уровням логирования для компонентов;_ports.yml— переопределение портов, на которых работают компоненты.
При редактировании конфигурационных файлов YAML соблюдайте отступы и формат записи. Неправильное форматирование может привести к ошибкам при установке.
Подробнее о том, как внести изменения в конфигурацию, см. в статье Работа с файлами конфигурации. Полный список переменных см. в Справочнике переменных.