93 lines
3.6 KiB
Markdown
93 lines
3.6 KiB
Markdown
# SSH Client — автоматизация миграции 1С, ZFS Backup
|
||
|
||
Централизованное управление удалёнными серверами через SSH: миграция 1С, PostgreSQL, ZFS Backup.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
# или (с pyproject.toml):
|
||
pip install -e .
|
||
```
|
||
|
||
## Конфигурация
|
||
|
||
Все конфиги в каталоге `config/` (YAML):
|
||
|
||
| Файл | Назначение |
|
||
|------------------------|--------------------------------------|
|
||
| `config/migration.yaml` | SSH, PostgreSQL, 1С, migration |
|
||
| `config/zfs_backup.yaml` | ZFS Backup (серверы, пулы) |
|
||
| `config/config_log.yaml` | Логирование (файл, Telegram, PRD v1.8) |
|
||
|
||
## Архитектура
|
||
|
||
```
|
||
config/
|
||
├── migration.yaml # Миграция 1С, примеры
|
||
├── zfs_backup.yaml # ZFS Backup
|
||
├── config_log.yaml # Логирование (файл, Telegram)
|
||
modules/
|
||
├── ssh_base.py # SSHBase — базовые SSH операции (connect, cmd, close)
|
||
├── ssh.py # SSHClient — объединённый клиент (SSH + Postgres + 1C)
|
||
├── logger.py # Единый логгер проекта
|
||
├── protocols.py # SSHProtocol, SSHOperationsBase — контракты модулей
|
||
├── postgresql.py # PostgreSQLOperations — операции с PostgreSQL
|
||
├── c1_cluster.py # C1ClusterOperations — операции с кластером 1С
|
||
└── zfs_backup_ops.py # ZFS Backup — снапшоты, репликация, очистка
|
||
```
|
||
|
||
**Паттерн использования:**
|
||
```python
|
||
from modules import SSHClient
|
||
|
||
client = SSHClient(hostname="host", port=22222, ...)
|
||
client.connect()
|
||
# PostgreSQL
|
||
bases = client.bases_list(srv_pgsql)
|
||
# 1С
|
||
client.set_c1_config(lxc_name, user, password)
|
||
client.base_info_update(...)
|
||
client.close()
|
||
```
|
||
|
||
## Сценарии
|
||
|
||
| Сценарий | Точка входа | Описание |
|
||
|------------|----------------------|-----------------------------------|
|
||
| Миграция 1С| `1c-migration.py` | Скрипт миграции баз |
|
||
| PostgreSQL | `example_postgresql.py` | Примеры: список баз, бэкап, restore |
|
||
| Кластер 1С | `example_c1_cluster.py` | Примеры: версия, базы, base_info_update |
|
||
| ZFS Backup | `zfs_backup.py` | Cron (ежедневно 20:00), CLI |
|
||
|
||
## ZFS Backup
|
||
|
||
Конфигурация: `config/zfs_backup.yaml` (формат v1.1 с `servers[].pools[]`).
|
||
|
||
```bash
|
||
python zfs_backup.py --config=config/zfs_backup.yaml
|
||
# или (по умолчанию):
|
||
python zfs_backup.py
|
||
# после pip install -e .:
|
||
zfs-backup
|
||
```
|
||
|
||
Логи: настраиваются в `config/config_log.yaml` (по умолчанию `/var/log/zfs_backup.log`).
|
||
Telegram: при `telegram.enabled: true` логи дублируются в Telegram-группу (PRD v1.8).
|
||
|
||
## Рекомендации
|
||
|
||
- **SSHClient** — рекомендуемый класс (PEP8). **ssh** — alias для обратной совместимости.
|
||
- Конфиги в `config/`: `migration.yaml` (миграция, примеры), `zfs_backup.yaml` (ZFS).
|
||
- Новые операционные модули: наследовать от `SSHOperationsBase`, реализовать контракт `ssh: SSHProtocol`.
|
||
|
||
## Git
|
||
|
||
```bash
|
||
cd /root/lib/ssh_client
|
||
git status
|
||
git add .
|
||
git commit -a -m 'Сообщение'
|
||
git push -u origin main
|
||
```
|