Постановка задачи
Стандартный сценарий подразумевает, что при запуске системы будут предоставлены права подключения рутового пользователя Postgres с правами на создание баз данных, пользователей и подключение плагинов к базам данных. Тогда перед запуском приложений будут автоматически выполнены скрипты, которые создают нужные базы данных и стандартных пользователей, активируют плагин timescale. После отработки скриптов запускаются приложения, они подключатся к БД по стандартным учетным записям, проведут миграции (создадут или обновят необходимые таблицы и наполнят данными по умолчанию).
Если такой подход невозможен по требованиям безопасности, то необходимые базы данных и пользователей нужно будет создать вручную. Ниже описаны алгоритмы настройки для обоих вариантов.
Запуск с автоматическим созданием баз данных и пользователей
Настройка сервера баз данных
- Установить сервер баз данных PostgresPro.
- Установить плагин timescaledb (из собранного самостоятельно deb-файла).
- Предоставить учетные данные рутового пользователя БД для запуска ECCM.
Настройка ECCM
Для настройки ECCM необходимо:
Указать параметры подключения к базе данных
В файлах (путь указан от корневой директории проекта):
./eccm/.env ./identity-provider/.env
укажите параметры для подключения к БД рутового пользователя:
POSTGRES_HOST=192.168.0.1 POSTGRES_PORT=5432 POSTGRES_USER=tester POSTGRES_PASSWORD=tester
Запустить проект с помощью compose-tools.sh
Для запуска проекта укажите ключи:
--pull --start <адрес WEB интерфейса> --external-database <address:port>
например:
./compose-tools.sh --pull --start eccm9.test.loc --external-database 100.110.2.2:5432
Контейнеры "postgres-configurator" в составе ECCM подключатся к удаленной базе данных по рутовым учетным записям и выполнят необходимые настройки. После них будут запущены остальные приложения.
Запуск с созданием баз данных вручную
Если предоставить рутовый доступ к БД невозможно, или по требованиям безопасности нужно использовать заданные пользователем параметры для доступа сервисов к БД, то создать базы данных нужно будет вручную.
Настройка сервера баз данных
1. Настроить сервер PostgresPro.
2. Установить плагин timescaledb (из собранного самостоятельно deb-файла).
3. Создать базы данных, активировать расширения timescale и добавить пользователей:
CREATE DATABASE 'eccm'; CREATE USER 'eccm' WITH ENCRYPTED PASSWORD 'eccm'; GRANT ALL PRIVILEGES ON DATABASE 'eccm' TO 'eccm'; CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE; CREATE EXTENSION IF NOT EXISTS timescaledb_toolkit; ALTER EXTENSION timescaledb UPDATE; ALTER EXTENSION timescaledb_toolkit UPDATE; CREATE DATABASE 'polemarch-db'; CREATE USER 'polemarch-user' WITH ENCRYPTED PASSWORD 'polemarch-pass'; GRANT ALL PRIVILEGES ON DATABASE 'polemarch-user' TO 'polemarch-db'; CREATE DATABASE 'identity_provider_db'; CREATE USER 'ip-admin' WITH ENCRYPTED PASSWORD 'ip-admin'; GRANT ALL PRIVILEGES ON DATABASE 'ip-admin' TO 'identity_provider_db'; CREATE DATABASE 'identity_provider_access_control_db'; CREATE USER 'ip-ory' WITH ENCRYPTED PASSWORD 'ip-ory'; GRANT ALL PRIVILEGES ON DATABASE 'ip-ory' TO 'identity_provider_access_control_db';
Настройка ECCM
Для настройки ECCM необходимо:
Настроить параметры доступа к БД у сервиса авторизации
В файле ./identity-provider/.env настройте параметры:
POSTGRES_HOST=192.168.0.1 POSTGRES_PORT=5432 POSTGRES_USER=tester <<-- для identity-provider эти параметры менять не нужно POSTGRES_PASSWORD=tester <<-- для identity-provider эти параметры менять не нужно ## Identity Provider IDENTITY_PROVIDER_POSTGRES_USER=ip-admin IDENTITY_PROVIDER_POSTGRES_PASSWORD=ip-admin IDENTITY_PROVIDER_POSTGRES_DB=identity_provider_db ## ORY ORY_POSTGRES_USER=ip-ory ORY_POSTGRES_PASSWORD=ip-private ORY_POSTGRES_DB=identity_provider_access_control_db
Остановить запуск postgres-configurator в стеке с сервисом авторизации
В файле ./identity-provider/docker-compose.yml закомментируйте сервис postgres-configurator:
# postgres-configurator:
# image: hub.eltex-co.ru/eccm/postgres-configurator:0.2
# restart: on-failure
# volumes:
# - ./data/init-db:/configurator/init-db
# environment:
# TZ: ${IDENTITY_PROVIDER_TIMEZONE}
# POSTGRES_HOST: ${POSTGRES_HOST}
# POSTGRES_PORT: ${POSTGRES_PORT:-5432}
# POSTGRES_USER: ${POSTGRES_USER}
# POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
# WAIT_TIMEOUT: ${WAIT_TIMEOUT:-0}
# labels:
# logger_type: bash_default
Настроить параметры доступа к БД у сервисов ECCM
В файле ./eccm/.env настройте параметры доступа к базе данных:
POSTGRES_HOST=192.168.0.1 POSTGRES_PORT=5432 POSTGRES_USER=tester POSTGRES_PASSWORD=tester
Настроить параметры доступа к БД для сервиса Polemarch
В файле ./eccm/docker-compose.yml обновите отмеченные параметры:
polemarch:
image: ${ECCM_REGISTRY}/eccm/polemarch:${ECCM_TAG}
restart: unless-stopped
init: true
cpus: ${MAX_PARALLEL_TASKS:-4}
environment:
TZ: ${ECCM_TIMEZONE}
POLEMARCH_DB_TYPE: 'postgresql'
POLEMARCH_DB_NAME: 'polemarch-db' <<-- название базы данных для Polemarch
POLEMARCH_DB_USER: 'polemarch-user' <<-- имя пользователя для доступа к БД Polemarch
POLEMARCH_DB_PASSWORD: 'polemarch-pass' <<-- пароль для доступа к БД Polemarch
POLEMARCH_DB_HOST: ${POSTGRES_HOST}
POLEMARCH_DB_PORT: ${POSTGRES_PORT}
Остановить запуск postgres-configurator в стеке с ECCM
В файле ./eccm/docker-compose.yml закомментируйте сервис postgres-configurator:
# postgres-configurator:
# image: hub.eltex-co.ru/eccm/postgres-configurator:0.3
# restart: on-failure
# volumes:
# - ./data/init-db:/configurator/init-db
# environment:
# <<: *postgres-client
# TZ: ${ECCM_TIMEZONE}
# WAIT_TIMEOUT: ${WAIT_TIMEOUT:-0}
# labels:
# logger_type: bash_default
Запустить проект с помощью compose-tools.sh
Для запуска проекта укажите ключи:
--pull --start <адрес WEB интерфейса> --external-database <address:port>
например:
./compose-tools.sh --pull --start eccm9.test.loc --external-database 100.110.2.2:5432
Контейнеры "postgres-configurator" в составе ECCM подключатся к удаленной базе данных по рутовым учетным записям и выполнят необходимые настройки. После них будут запущены остальные приложения.