ADR-001: Ansible как основной IaC инструмент¶
Статус: Принято (Mar 2026)¶
Контекст¶
130+ VPN серверов на разных VPS-провайдерах (MonoVM, TheHosting, DataPacket) в 30+ странах. Нужен инструмент для автоматизации: деплой, обновления, SSH ключи, мониторинг, firewall.
Рассматривали: Ansible, Terraform, Kubernetes, Docker Swarm, Puppet/Chef/Salt.
Решение¶
Ansible — push-based, без агентов, через SSH.
Причины: - Без агентов — не нужно ставить софт на 130+ серверов - SSH — единственный транспорт, уже есть доступ - Провайдеры без API — MonoVM/TheHosting не имеют Terraform provider'ов - Не кластер — серверы в разных странах, каждый отдельный VPS, K8s не подходит - Бюджет $100-150/month — K8s control plane стоит дороже - 1 DevOps — Ansible проще для одного человека чем Puppet/Chef
Отклонено¶
- Terraform — провайдеры без API, VPS заказываются вручную
- Kubernetes — wrong topology (отдельные VPS, не кластер), wrong budget
- Docker Swarm — нет пользы от кластеризации географически распределённых VPN
- Puppet/Chef — требуют агенты на каждом сервере
Последствия¶
- Ansible = single source of truth для серверной конфигурации
- Все playbooks и roles в
devops/shiva-ansibleна GitLab - Секреты через ansible-vault (пароль в Vaultwarden)
- Inventory sync с Ansible inventory (
servers.ini) - CI/CD для приложений остаётся в GitLab (не Ansible)