113 lines
4.5 KiB
Python
113 lines
4.5 KiB
Python
#!/usr/bin/python3
|
||
# -*- coding: utf-8 -*-
|
||
"""
|
||
Конфигурационный файл для SSH клиента и миграции 1С
|
||
ВНИМАНИЕ: Не коммитьте этот файл в публичные репозитории!
|
||
Пароли хранятся в открытом виде в этом файле.
|
||
"""
|
||
|
||
# SSH настройки
|
||
SSH_CONFIG = {
|
||
"hostname": "g.it.cln.su",
|
||
"port": 22222, # Порт должен быть int
|
||
"username": "root",
|
||
"pkey_file": "/root/.ssh/id_rsa",
|
||
"host_keys": "~/.ssh/known_hosts"
|
||
}
|
||
|
||
# PostgreSQL настройки
|
||
POSTGRESQL_CONFIG = {
|
||
"archive_server": "1c.it.cln.su",
|
||
"restore_server": "postgres.it.cln.su",
|
||
"backup_date": "16.12.2025",
|
||
"extra_backup": True,
|
||
"postgres_user": "postgres",
|
||
"postgres_password": "PrestigePostgres"
|
||
}
|
||
|
||
# 1C настройки
|
||
C1_CONFIG = {
|
||
"lxc_container_name": "c1", # Имя LXC контейнера с сервером 1С
|
||
"cluster_user": "neon",
|
||
"cluster_password": "Pre$tige310582",
|
||
|
||
# Настройки для обновления базы 1С (используются в c1_base_info_update)
|
||
# "db_server": "/tmp",
|
||
# "db_user": "usr1cv8",
|
||
# "db_password": "",
|
||
|
||
"db_server": "postgres.it.cln.su",
|
||
"db_user": "postgres",
|
||
"db_password": "PrestigePostgres",
|
||
|
||
# "db_name": "", # Имя базы данных PostgreSQL (если пустое, будет использовано имя базы 1С)
|
||
|
||
"infobase_user": "neon",
|
||
"infobase_password": "$F%G^H&J*K"
|
||
}
|
||
|
||
# Списки баз данных для миграции и примеров использования
|
||
MIGRATION_CONFIG = {
|
||
"archive_bases_name": [
|
||
# 'konsaltpt-buhg',
|
||
# 'vpr-ut-crm',
|
||
# 'quant-ut',
|
||
# 'kompromis-test',
|
||
# 'luna-ut',
|
||
# 'messinia-buhg',
|
||
# 'morea-buhg',
|
||
# 'horen-ut',
|
||
'salon',
|
||
'lmotor-ut',
|
||
'staretail',
|
||
'uran-ut',
|
||
],
|
||
"restore_bases_name": None, # Если None, будет использован archive_bases_name
|
||
"bases": None, # Список баз для обработки в примерах (example_c1_cluster.py, example_postgresql.py)
|
||
# Если None, будет использован archive_bases_name
|
||
"scheduled_jobs_deny": "on", # Запрет запланированных заданий для всех баз (on/off)
|
||
"sessions_deny": "off" # Запрет сеансов для всех баз (on/off)
|
||
}
|
||
|
||
def get_config():
|
||
"""
|
||
Возвращает конфигурацию проекта
|
||
|
||
Returns:
|
||
dict: Словарь с конфигурацией, содержащий секции:
|
||
- ssh: настройки SSH подключения
|
||
- postgresql: настройки PostgreSQL
|
||
- c1: настройки 1С кластера
|
||
- migration: настройки миграции баз данных (включая список баз для примеров)
|
||
"""
|
||
config = {
|
||
'ssh': SSH_CONFIG.copy(),
|
||
'postgresql': POSTGRESQL_CONFIG.copy(),
|
||
'c1': C1_CONFIG.copy(),
|
||
'migration': MIGRATION_CONFIG.copy()
|
||
}
|
||
|
||
# Если restore_bases_name не указан, используем archive_bases_name
|
||
if config['migration']['restore_bases_name'] is None:
|
||
config['migration']['restore_bases_name'] = config['migration']['archive_bases_name'].copy()
|
||
|
||
# Если bases не указан, используем archive_bases_name для примеров
|
||
if config['migration']['bases'] is None:
|
||
config['migration']['bases'] = config['migration']['archive_bases_name'].copy()
|
||
|
||
# Валидация scheduled_jobs_deny и sessions_deny
|
||
scheduled_jobs_deny = config['migration'].get('scheduled_jobs_deny', 'off')
|
||
sessions_deny = config['migration'].get('sessions_deny', 'off')
|
||
|
||
if scheduled_jobs_deny not in ['on', 'off']:
|
||
raise ValueError(f"scheduled_jobs_deny должен быть 'on' или 'off', получено: {scheduled_jobs_deny}")
|
||
if sessions_deny not in ['on', 'off']:
|
||
raise ValueError(f"sessions_deny должен быть 'on' или 'off', получено: {sessions_deny}")
|
||
|
||
# Устанавливаем значения по умолчанию, если не указаны
|
||
config['migration']['scheduled_jobs_deny'] = scheduled_jobs_deny
|
||
config['migration']['sessions_deny'] = sessions_deny
|
||
|
||
return config
|
||
|