Для начала работы с TantorDB в Яндекс.Облако на основании образа СУБД создаётся виртуальная машина. Яндекс позволяет это делать различными способами:
 - через веб интерфейс на https://console.cloud.yandex.ru;
 - с помощью CLI утилиты YC;
 - посредством Terraform через своего провайдера.

Ниже будет дан пример по созданию виртуальной машины в Яндекс.Облако с помощью консольной утилиты YC CLI. Для исследования других вариантов рекомендуем обратиться к официальной документации:

https://cloud.yandex.ru/docs/compute/operations/vm-create/create-linux-vm
https://cloud.yandex.ru/docs/cli/cli-ref/managed-services/vpc/
https://cloud.yandex.ru/docs/cli/cli-ref/managed-services/compute/

Обязательным шагом при создании ВМ в Яндекс.Облако является указание логина и ssh-ключа пользователя, который будет создан на виртуальной машине. В дальнейшем, при необходимости, будем упоминать этого пользователя как yc-user, его ключ как tdb-yc-key и IP адрес ВМ как host-ip.

1. Создание виртуальной машины

Генерируем ключевую пару ssh для последующего использования:

ssh-keygen -a 100 -t ed25519 -f ~/.ssh/tdb-yc-key -C "$(whoami)@$(uname -n)-$(date +'%m%d%Y')"
BASH

Устанавливаем переменные среды, которые будем использовать при создании сетевого окружения и самой виртуальной машины. Все указанные идентификаторы являются примерами, реальные данные уточняйте в личном кабинете:

VM_NAME=tantordb-test-instance-01
IMG_FOLDER=somefolderid
IMG_ID=someimageid
NET=tdb-test
BASH

Создаём отдельную сеть в Yandex.Cloud:

yc vpc network create \
--name $NET \
--description "test network for tantordb"
BASH

Создаём подсеть внутри сети с указанием региона размещения и диапазона адресов:

yc vpc subnet create \
--name $NET-subnet-a \
--description "primary subnet for tantordb testing" \
--zone ru-central1-a \
--range 10.128.100.0/24 \
--network-name $NET
BASH

Создаём саму виртуальную машину, пробрасывая в неё сгенерированный ранее ключ. Ключ будет добавлен создаваемому cloud-init пользователю yc-user. Если требуется более тонкая настройка - передавайте параметры в виде cloud-config через ключ "user-data" флага --metadata:

yc compute instance create \
--name $VM_NAME \
--hostname $VM_NAME \
--zone ru-central1-a \
--create-boot-disk name=$VM_NAME-boot,type=network-ssd,size=20GB,image-folder-
id=$IMG_FOLDER,image-id=$IMG_ID \
--network-interface subnet-name=$NET-subnet-a,nat-ip-version=ipv4 \
--cores 2 \
--memory 2 \
--platform standard-v3 \
--ssh-key ~/.ssh/tdb-yc-key.pub
BASH

После завершения работы можно использовать следующие команды для удаления созданной инфраструктуры:

yc compute instance delete $VM_NAME
yc vpc subnet delete $NET-subnet-a
yc vpc network delete $NET
BASH

2. Подключение к виртуальной машине

Команда создания ВМ после завершения работы вернёт данные о виртуальной машине, в том числе и IP адрес. Также его узнать можно через веб интерфейс или используя команду ниже (нам нужен публичный адрес):

yc compute instance list | grep $VM_NAME
BASH

После запуска ВМ к ней можно подключиться используя сгенерированный ранее ключ и указав её IP адрес:

ssh -i ~/.ssh/tdb-yc-key yc-user@host-ip
BASH

3. Проверка статуса службы TantorDB

Проверяем статус сервиса:

sudo systemctl status tantor-be-server-15
BASH

Сделаем тестовый запрос в базу данных:

sudo su - postgres -c 'psql -c "select tantor_version(), tantor_edition(), tantor_build();"'
BASH

Для остановки/запуска/перезагрузки сервиса используем следующие команды:

sudo systemctl stop tantor-be-server-15
sudo systemctl start tantor-be-server-15
sudo systemctl restart tantor-be-server-15
BASH

4. Подключение к TantorDB

Войдя в систему как yc-user используем следующую команду для подключения:

sudo -iu postgres psql
BASH

Для выхода из psql можно использовать комбинацию клавиш Ctrl+D и команды \q или exit

5. Внешнее подключение к TantorDB

Для подключения к базе данных снаружи необходимо провести предварительную настройку. В данном образе пакет iptables не установлен, как и надстройки над ним типа ufw или firewalld. Для обеспечения сетевой безопасности установите и настройте необходимые утилиты, не забыв открыть доступ для TantorDB (по умолчанию - порт 5432). Последующие действия не следует рассматривать как рекомендацию - скорее как пример. Руководствуйтесь принятой у вас политикой безопасности и вашими потребностями, обращайтесь к официальной документации:

https://www.postgresql.org/docs/current/index.html

Устанавливаем ожидание подключения на всех TCP/IP адресах (по умолчанию это только "localhost"). IPv6 сюда тоже входит - если это нежелательно, то можно выставить "0.0.0.0":

sudo -iu postgres psql -c "ALTER SYSTEM SET listen_addresses = '*'"
BASH

Задаём пароль для пользователя postgres (ввод отображаться не будет):

sudo -iu postgres psql -c "\password"
BASH

Настраиваем pg_hba.conf для разрешения подключения с любого адреса к любой базе данных любым пользователем по паролю:

sudo bash -c 'echo "host all all all scram-sha-256" >> /var/lib/postgresql/tantor-be-15/data/pg_hba.conf'
BASH

Перезапускаем сервис чтобы внесённые изменения вступили в силу

sudo systemctl restart tantor-be-server-15
BASH

Проверить что служба ожидает подключения на необходимом порту можно таким образом (с удалённой машины):

nc -vz host-ip 5432
BASH

Само подключение к базе данных с удалённого хоста осуществляется таким образом:

psql -h host-ip -U postgres -d postgres
SQL