Постановка задачи
Стандартный сценарий подразумевает, что при запуске системы будут предоставлены права подключения рутового пользователя Postgres с правами на создание баз данных, пользователей и подключение плагинов к базам данных. Тогда перед запуском приложений будут автоматически выполнены скрипты, которые создают нужные базы данных и стандартных пользователей, активируют плагин timescale. После отработки скриптов запускаются приложения, они подключатся к БД по стандартным учетным записям, проведут миграции (создадут или обновят необходимые таблицы и наполнят данными по умолчанию).
Если такой подход невозможен по требованиям безопасности, то необходимые базы данных и пользователей нужно будет создать вручную. Ниже описаны алгоритмы настройки для обоих вариантов.
Запуск с автоматическим созданием баз данных и пользователей
Настройка сервера баз данных
- Установить сервер баз данных PostgresPro
- Установить плагин timescaledb (из собранного нами deb файла)
- Предоставить учетные данные рутового пользователя БД для запуска 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 подключатся к удаленной базе данных по рутовым учетным записям и выполнят необходимые настройки. После них будут запущены остальные приложения.