Добавлен тест инфраструктуры

This commit is contained in:
mi
2026-07-14 19:41:25 +03:00
parent 4d8e856fd8
commit 6d1cb3d6d9
7 changed files with 1374 additions and 6 deletions
+145 -6
View File
@@ -1,14 +1,153 @@
# usefull commands
Убрать переносы строк: sed -i 's/\r$//' name-file.sh #sed -i 's/\r$//' /tmp/setup-vm.sh
docker compose stop # мягко останавливает контейнеры (не удаляет)
sudo shutdown -h now # выглючить ВМ
- Убрать переносы строк: sed -i 's/\r$//' name-file.sh
- docker compose stop # мягко останавливает контейнеры (не удаляет)
- sudo shutdown -h now # выглючить ВМ
- Генерация паролей
- (со спец.символами) openssl rand -base64 32
- (без спец.символов) openssl rand -hex 16
- openssl rand -base64 16 | xclip -selection clipboard # Linux
Туннель до БД: ssh -i C:\Users\MI\.ssh\hansel -L 5432:10.105.90.166:5432 root@111.88.219.213 -N
Туннель до БД: ssh -i C:\Users\MI\.ssh\hansel -L 5433:192.168.0.211:5433 root@135.106.164.58 -N
++ ssh -i C:\Users\MI\.ssh\hansel root@111.88.219.213
# Разворачиваем инфраструктуру в Селектел ч1
++ scp -i C:\Users\MI\.ssh\hansel -r "C:\Users\MI\Documents\Assistent\HAN_chat_specification\codebase\backend\deployment\scripts\setup-vm.sh" root@111.88.219.213:/tmp/setup-vm.sh
## Создание сети
## Создание групп безопасности для сети и для БД
Для сети открываем порты 80, 22, 443
Для БД открываем порты 5432, 5433 но только из CIDR (192.168.0.211\24)
## Создаем ВМ, подключаем к новой сети (через порт) и перезагружаем (либо руками вводить новые сетевые настройки - надо выбрать)
# Подключение к ВМ и первичный скрипт
++ ssh -i C:\Users\MI\.ssh\hansel root@135.106.164.58
++ scp -i C:\Users\MI\.ssh\hansel -r "C:\Users\MI\Documents\Assistent\HAN_chat_specification\codebase\backend\deployment\scripts\setup-vm.sh" root@135.106.164.58:/tmp/setup-vm.sh
chmod +x /tmp/setup-vm.sh
sudo /tmp/setup-vm.sh
# Скрипт создал деплой пользователя. Нужно Перенести туда публичный ключ и дать права на файл и папку
## Вставляем публичный ключ новой строкой Далее даем права
sudo nano /home/deploy/.ssh/authorized_keys
sudo chmod 700 /home/deploy/.ssh
sudo chmod 600 /home/deploy/.ssh/authorized_keys
sudo chown -R deploy:deploy /home/deploy/.ssh
## Пароль деплою для использования sudo
sudo passwd deploy
## После этого можно подключаться под деплой пользователем
ssh -i C:\Users\MI\.ssh\han_chat_deploy deploy@135.106.164.58
## GIT не работал. Проект пришлось копировать.
tar -C HAN_chat_specification/codebase/backend -czf han-chat-backend.tar.gz .
scp -i C:\Users\MI\.ssh\han_chat_deploy C:\Users\MI\Documents\Assistent\han-chat-backend.tar.gz deploy@135.106.164.58:/tmp/
## Дальше распаковка
cd /opt/han-chat/backend
tar -xzf /tmp/han-chat-backend.tar.gz
## Правим переносы строк и даем права на исполнение
find . -type f \( -name '*.sh' -o -name 'validate-env' \) -exec dos2unix {} +
chmod +x scripts/validate-env deployment/scripts/*.sh redis/scripts/*.sh nginx/scripts/*.sh
# Разворачиваем инфраструктуру в Селектел ч2
## Создаем БД
В базе подключаем pgcrypto
### Копируем СА сертификат
Вариант Деплоя:
mkdir -p /opt/han-chat/backend/secrets/pg
scp -i C:\Users\MI\.ssh\han_chat_deploy -r C:\Users\MI\Documents\job\HAN_new_life\HANapp\Production\sertificates\CA.pem deploy@135.106.164.58:/opt/han-chat/backend/secrets/pg/ca.pem
chmod 644 /opt/han-chat/backend/secrets/pg/ca.pem
Вариант Селектела:
mkdir -p ~/.postgresql/
wget https://storage.dbaas.selcloud.ru/CA.pem -O ~/.postgresql/root.crt
chmod 0600 ~/.postgresql/root.crt
### Проверка подключения к Postgers в ВМ
nc -zv 192.168.0.211 5433
sudo apt update
sudo apt install postgresql-client
psql "host=master.ef54e3e4-ad3d-4b80-a6af-d63269e0895a.c.dbaas.selcloud.ru \
port=5432 \
dbname=han_chat \
user=dbAdmin \
sslmode=verify-ca"
### Заводим пользователей и схемы
Пользователей создаем через интерфейс селектела.
Под админом даем права на создание в БД:
GRANT CREATE ON DATABASE han_chat TO han_app;
GRANT CREATE ON DATABASE han_chat TO bitrix_local_app;
GRANT CREATE ON DATABASE han_chat TO bitrix_sync_user;
GRANT CREATE ON DATABASE han_chat TO message_safety_app;
GRANT CREATE ON DATABASE han_chat TO keycloak_user;
Схемы создаем от лица пользователей, заходя каждым из них в БД.
+ Запрещаем всем посторонним входить в схему han_app и др.
CREATE SCHEMA IF NOT EXISTS han_app;
REVOKE ALL ON SCHEMA han_app FROM PUBLIC;
CREATE SCHEMA IF NOT EXISTS bitrix_local;
REVOKE ALL ON SCHEMA bitrix_local FROM PUBLIC;
CREATE SCHEMA IF NOT EXISTS bitrix_sync;
REVOKE ALL ON SCHEMA bitrix_sync FROM PUBLIC;
CREATE SCHEMA IF NOT EXISTS message_safety;
REVOKE ALL ON SCHEMA message_safety FROM PUBLIC;
CREATE SCHEMA IF NOT EXISTS keycloak;
REVOKE ALL ON SCHEMA keycloak FROM PUBLIC;
После реализации bitrix_sync (проверить, вероятно не на все таблицы права нужны):
-- Даем право на чтение (SELECT) всех СУЩЕСТВУЮЩИХ таблиц в схеме
GRANT SELECT, INSERT ON ALL TABLES IN SCHEMA han_app TO bitrix_sync_user;
-- Настраиваем права по умолчанию для новых таблиц
ALTER DEFAULT PRIVILEGES IN SCHEMA han_app
GRANT SELECT ON TABLES TO bitrix_sync_user;
-- Если нужно дать право на чтение и для новых последовательностей (sequences):
ALTER DEFAULT PRIVILEGES IN SCHEMA han_app
GRANT USAGE, SELECT ON SEQUENCES TO bitrix_sync_user;
## Заводим S3 хранилища:
Создаем 2 сервисных пользователя и заводим им ключи:
- API backend SELECTEL_S3_ACCESS_KEY / SELECTEL_S3_SECRET_KEY
- Message Safety SELECTEL_S3_QUARANTINE_READ_ACCESS_KEY / SELECTEL_S3_QUARANTINE_READ_SECRET_KEY
Создаем 3 приватных бакета
- han-chat-quarantine (политика доступа API backend RW, Message Safety R)
- han-chat-attachments (политика доступа API backend RW)
- han-chat-documents (политика доступа API backend RW)
RW:
ListBucket
GetBucketLocation
PutObject
GetObject
DeleteObject
ListBucketMultipartUploads
ListMultipartUploadParts
AbortMultipartUpload
R:
ListBucket
GetBucketLocation
GetObject
ListBucketMultipartUploads
ListMultipartUploadParts
Политика CORS:
Allowed origin: https://chat.example.ru
Methods: POST, PUT, GET, HEAD
Headers: Content-Type, x-amz-*
Expose headers: ETag