Перейти к содержанию

Инвентарь

Файл: inventory/servers.ini

Source of truth — 208 хостов, 30+ групп.

Основные группы

Группа Описание Кол-во
[vpn] VPN серверы XUI (MonoVM, TheHosting, DataPacket, VDSina) 55
[vpn_wl_proxy] Whitelist proxy (VK Cloud, nftables DNAT) 14
[vpn_inactive] 0 активных, 16 закомментированных (удалять из inventory, не перемещать сюда)
[proxy] API / subscription proxy 6
[internal_servers] Внутренние серверы (через ProxyJump) 69
[infra] Karmann инфра (через ProxyJump) 47
[api-vpn] Backend серверы 3
[api-db] MySQL серверы 3
[grafana] Мониторинг (10.99.87.5) 1
[telegram-proxies] Telegram MTProto proxy 3

Формат записи

vpn-monovm-austria-01  ansible_host=130.195.222.139  ansible_port=22  ansible_user=root  external_ip_list=[130.195.222.139,130.195.222.142]

Конвенция: vpn-<провайдер>-<страна>-<номер>

Переменные

Файл Содержание
group_vars/all.yml SSH ключи, xray image/tag, ports
group_vars/vault.yml Секреты (зашифровано ansible-vault)
host_vars/<hostname>.yml Per-host overrides (WL серверы — nftables)
[all:vars] Глобальные переменные
[infra:vars] ProxyJump через 212.70.189.60:2255

Добавление сервера

  1. Добавить строку в группу [vpn] в servers.ini
  2. При необходимости — host_vars/<hostname>.yml
  3. ansible-playbook playbooks/vpn.yml --limit <hostname> --vault-password-file .vault_pass

Аудит

# Из monorepo shivavpn:
python3 scripts/inventory_reconcile.py          # Ansible ↔ MySQL ↔ VCS
python3 scripts/infrastructure.py stats         # Статистика