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

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)