Infrastructure as Code
Репозиторий управления конфигурациями и развёртыванием сервисов. Конфигурация отделена от логики деплоя. Восстановление сервера с нуля — менее 10 минут.
10+ микросервисов< 10 мин восстановлениеDefault Deny firewall
Бизнес-задача
Унификация окружений для 10+ микросервисных проектов. Ручная настройка серверов приводила к рассинхрону между prod и stage. Воспроизводимая инфраструктура из декларативных конфигов.
Ключевая задача
Шаблонизация Docker Compose для различных типов приложений, безопасное управление секретами через Ansible Vault, автоматизация бэкапов БД в S3.
Шаблонизация Docker Compose
Вместо копипасты docker-compose.yml для каждого проекта — роль-генератор. По аналогии с Helm для K8s, но для небольших проектов где K8s избыточен.
- •Вход: переменные проекта (YAML) + секреты (Ansible Vault)
- •Процесс: Ansible генерирует конфигурации и запускает через community.docker
- •Выход: стандартизированные контейнеры с единым подходом к логированию, сети, рестартам
Безопасность
- •Секреты: Ansible Vault. Попадают на сервер только в момент деплоя в .env файлы с правами 600
- •Firewall: iptables со стратегией Default Deny. Открыты только SSH и порты балансировщика
- •SSH: отключён root-login и вход по паролю. Только ключи
- •Логи: чувствительные переменные не попадают в вывод Ansible (no_log)
Автоматизация
- •Бэкапы: PostgreSQL и ClickHouse в S3 по расписанию
- •CI/CD: автоматическое развёртывание self-hosted GitHub Actions Runners
- •Мониторинг: Node Exporter + Prometheus
Технологии
Core
Ansible Core 2.18Python 3.11Jinja2 Templates
Collections
community.dockercommunity.generalansible.posix
Cloud
Yandex Cloud (S3)Docker Engine
Target OS
Debian 12Ubuntu 22.04/24.04
Моя роль
- Архитектура репозитория, снизившая время развёртывания нового проекта с часов до минут
- Шаблонизация Docker Compose для стандартизации микросервисов
- Настройка безопасности серверов (iptables, SSH) и автоматические бэкапы в S3