Перейти к основному содержимому
Версия: 1.12

Обзор конфигурации 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 на этапе подготовки окружения.

Структура для флейвора 3VM
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 соблюдайте отступы и формат записи. Неправильное форматирование может привести к ошибкам при установке.

Подробнее о том, как внести изменения в конфигурацию, см. в статье Работа с файлами конфигурации. Полный список переменных см. в Справочнике переменных.