Все проекты

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