Постановка задачи

Стандартный сценарий подразумевает, что при запуске системы будут предоставлены права подключения рутового пользователя Postgres с правами на создание баз данных, пользователей и подключение плагинов к базам данных. Тогда перед запуском приложений будут автоматически выполнены скрипты, которые создают нужные базы данных и стандартных пользователей, активируют плагин timescale. После отработки скриптов запускаются приложения, они подключатся к БД по стандартным учетным записям, проведут миграции (создадут или обновят необходимые таблицы и наполнят данными по умолчанию).
Если такой подход невозможен по требованиям безопасности, то необходимые базы данных и пользователей нужно будет создать вручную. Ниже описаны алгоритмы настройки для обоих вариантов.

Запуск с автоматическим созданием баз данных и пользователей

Настройка сервера баз данных

  1. Установить сервер баз данных PostgresPro.
  2. Установить плагин timescaledb (из собранного самостоятельно deb-файла).
  3. Предоставить учетные данные рутового пользователя БД для запуска 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 подключатся к удаленной базе данных по рутовым учетным записям и выполнят необходимые настройки. После них будут запущены остальные приложения.