Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

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

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

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

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

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

Настроить параметры доступа к БД у сервиса авторизации

в файле ./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 подключатся к удаленной базе данных по рутовым учетным записям и выполнят необходимые настройки. После них будут запущены остальные приложения.

  • Нет меток