Руководство администратора

Установка

  1. Получаем архив с необходимыми файлами и распаковываем:

    tar xf example_client.tar.gz
    cd example_client
    example_client/
    ├── client.crt
    ├── client.key
    ├── install.sh
    └── license.txt
    
    1 directory, 4 files
  2. Запускаем скрипт для установки сертификата, файла конфигурации и репозитория APT:

    sudo ./install.sh
  3. Устанавливаем пакеты:

    1. Только Tengri

      sudo apt install tengri
    2. Tengri с локальным S3 (MinIO)

      sudo apt install tengri tengri-minio
  • После установки Tengri будет готов к работе на порту 3000.
    Логин и пароль по умолчанию: admin / admin.

  • Пакет tengri-minio установит локальный MinIO с дефолтными настройками. Подробности о дальнейшей настройке можно узнать в документации MinIO.

Настройка конфигурации

  • Дополнительные настройки конфигурации Tengri можно задать в файле /etc/tengri/tengri.conf (по умолчанию файл отсутствует).

    Полный список возможных настроек в файле tengri.conf
    # TNGRi configuration parameters
    
    # =========
    # Licencing
    # =========
    #
    TNGRI_LICENSE_FILE=/opt/tengri/license.txt
    
    # ===========================
    # S3 configuration parameters
    # ===========================
    #
    #
    # Access key id and secret key of user that will connect to S3
    # rename SECRET_ACCESS_KEY to SECRET_KEY
    TNGRI_S3_ACCESS_KEY_ID=minioadmin
    TNGRI_S3_SECRET_ACCESS_KEY=minioadmin
    #
    # Region to send to S3 server. Generally you don't need to change that, just make
    # sure that target S3 has this same region
    TNGRI_S3_REGION=eu-central-1
    TNGRI_S3_DEFAULT_REGION=eu-central-1
    #
    # API endpoint URL for target S3. Must be in FQDN form
    #     TNGRI_S3_ENDPOINT_URL=http://example.com
    TNGRI_S3_ENDPOINT_URL=http://127.0.0.1:9002
    #
    # Bucket name to use. Must exist before start, so make sure that it exists and
    # has full access rights for this bucket. Must be in full form, i.e.
    #     TNGRI_S3_BUCKET_NAME=s3://example:9000
    TNGRI_S3_BUCKET_NAME=prostore
    
    # =======================
    # TNGRi server parameters
    # =======================
    #
    #
    # Iceberg catlog path in S3 bucket
    TNGRI_WAREHOUSE_PATH=s3://prostore/iceberg/
    #
    # Name for the default schema in TNGRi.
    TNGRI_DEFAULT_SCHEMA=public
    #
    # URI for catalog endpoint. Must be either PostgreSQL or SQLite connection string, i.e.
    #     TNGRI_CATALOG_URI=postgresql://user:password@example.com/database
    TNGRI_CATALOG_URI=postgresql://prostore:prostore@127.0.0.1:5432/prostore
    #
    # Path to writable directory where cached files will be placed.
    #
    # WARNING: Should be placed on SSD storage. Tngri uses aggressive caching strategies
    # to reduce S3 load
    #
    TNGRI_CACHE_DIR=/var/lib/tengri/cache
    #
    # Path to writable directory where python kernels will be stored.
    TNGRI_KERNEL_DIR=/var/lib/tengri/kernels
    #
    # If set to false then no agent is required to process queries.
    # Must be true for production environments
    TNGRI_REMOTE_SESSIONS=true
    #
    # Set to true for more log output
    TNGRI_DEBUG=false
    #
    # Host to bind main server to
    TNGRI_HOST=0.0.0.0
    #
    # Port to bind PostgreSQL protocol implementation to
    TNGRI_PORT=5433
    #
    # Host to bind RPC server for communication between agent and server
    TNGRI_RPC_HOST=0.0.0.0
    #
    # Port to bind RPC server for communication between agent and server
    TNGRI_RPC_PORT=57776
    
    # =============================
    # Web application configuration
    # =============================
    #
    #
    # SSL configuration. If set then Web communication will be done over SSL, otherwise
    # it will be plaintext.
    #
    # Path to SSL key.
    # TNGRI_SSL_KEY=
    #
    # Path to SSL certificate file.
    # TNGRI_SSL_CERT=
    #
    # Enables TNGRi web app.
    TNGRI_ENABLE_WEBSOCKET=true
    #
    # Path to static files for web app.
    TNGRI_WEBAPP_DIR=/usr/share/tengri-web
    #
    # Host to bind HTTP server to
    TNGRI_WEBAPP_HOST=0.0.0.0
    #
    # Port to bind HTTP server to
    TNGRI_WEBAPP_PORT=3000
    #
    # Host to bind Websocket server to. It is used extensively by webapp and python clients
    TNGRI_WEBSOCKET_HOST=0.0.0.0
    #
    # Port to bind Websocket server to
    TNGRI_WEBSOCKET_PORT=3001
    #
    # Host to bind PyLSP server to. It is used by webapp to provide code completion
    TNGRI_PYLSP_HOST=0.0.0.0
    #
    # Port to bind PyLSP server to
    TNGRI_PYLSP_PORT=3003
    #
    # Host to bind CRUD. Used by webapp to send messages in chats, manage scheduled
    # notebooks and manage external catalogs
    TNGRI_CRUD_HOST=0.0.0.0
    #
    # Port to bind CRUD to
    TNGRI_CRUD_PORT=3004
    
    # ============================
    # TNGRi services configuration
    # ============================
    #
    # Enable TNGRi's Iceberg REST catalog API provider
    TNGRI_ENABLE_REST_CATALOG=true
    
    # Host to bind REST catalog server to
    TNGRI_REST_CATALOG_HOST=0.0.0.0
    
    # Port to bind REST catalog to
    TNGRI_REST_CATALOG_PORT=3005
    
    # Enable compaction daemon
    TNGRI_ENABLE_COMPACTION=true
    
    # Enable notebook CRON daemon
    TNGRI_ENABLE_CRON=true
    
    # ============================
    # TNGRi deployment information
    # ============================
    #
    # Needed for external clients to connect to TNGRi services. For example, python clients
    # connecting from user's local machines. Set these to the values that point to this
    # installation, for example, if using reverse proxy for HTTP or Postgres protocol.
    #
    # Change the name of site deployment
    # TNGRI_SITE_NAME=tngri
    #
    # Websocket address to connect to. Must be in FQDN form, i.e.
    #     TNGRI_SITE_WS_ADDR=ws://example.com:3001
    TNGRI_SITE_WS_ADDR=ws://0.0.0.0:3001
    #
    # Postgres protocol address to connect to, i.e.
    #     TNGRI_SITE_PSQL_ADDR=example.com:5433
    # TNGRI_SITE_PSQL_ADDR=
    #
    # S3 address to connect to. Must be in FQDN form, i.e.
    #     TNGRI_SITE_S3_ADDR=http://example.com:9000
    # TNGRI_SITE_S3_ADDR=
    #
    # S3 access key for public usage (Stage only)
    # TNGRI_SITE_PUBLIC_LOADER_ACCESS_KEY=public_loader
    #
    # S3 secret key for public usage (Stage only)
    # TNGRI_SITE_PUBLIC_LOADER_SECRET_KEY=public_loader
    #
  • Дополнительные настройки конфигурации MinIO можно задать в файле /etc/default/tengri-minio в соответствии с документацией MinIO.

    После обновления файла конфигурации MinIO необходимо выполнить:

    sudo systemctl daemon-reload
    sudo systemctl restart minio

Сброс пароля администратора

В случае если утрачен доступ к паролю администратора, его можно сбросить.

Для этого на сервере, где был установлен пакет, нужно выполнить:

sudo -u tengri bash -c 'export $(egrep -v "^#|^$|.*#" /var/lib/tengri/tengri.defaults | xargs); prostore reset-admin-password'"

После этого текущий пароль администратора сбросится, и новый автоматически сгенерированный пароль будет показан в логе вывода.

Настройка ролей для пользователей

Создание ролей для пользователей

Чтобы создать роль analyst, выполняем запрос:

CREATE ROLE analyst;

Назначение ролей пользователям

Чтобы назначить пользователю tengri_user роль analyst, выполняем запрос:

GRANT ROLE analyst TO tengri_user;

Предоставление ролям привилегий

Чтобы предоставить роли analyst привилегии для чтения и записи внутри схемы analytical_sandbox, выполняем запрос:

GRANT
    USAGE,
    MODIFY,
    CREATE TABLE,
    CREATE VIEW
ON SCHEMA analytical_sandbox
TO ROLE analyst;

После этого у всех пользователей с ролью analyst появятся права на чтение и изменение таблиц и представлений внутри схемы analytical_sandbox.

При необходимости скорректируйте список предоставляемых привилегий для данной роли.

Отзыв привилегий у ролей

Чтобы отозвать у роли analyst привилегию для записи внутри схемы analytical_sandbox, выполняем запрос:

REVOKE
    MODIFY
ON SCHEMA analytical_sandbox
FROM ROLE analyst;

При необходимости скорректируйте список отзываемых привилегий для данной роли.

Отзыв ролей у пользователей

Чтобы отозвать у пользователя tengri_user роль analyst, выполняем запрос:

REVOKE ROLE analyst FROM tengri_user;