Files
DmitryandClaude Sonnet 5 d2e1e6876a docs: AI project context (docs/ai) and repository documentation refresh
- docs/ai/: stable, repo-verified context - README, architecture, tech-stack,
  edge-cases, plan (confirmed active work only), migration-tofu (the blue-green
  OpenTofu migration runbook and per-service findings), legacy-warning, links.
- AGENTS.md: slimmed to a working contract that points at docs/ai instead of
  restating it; CLAUDE.md is an adapter that @-includes it.
- README.md, ansible/README.md, ansible/roles/README.md,
  roles/lxc_docker_host/README.md: bring wording in line with the current
  control plane (Makefile entry point, registry, tofu, memoir-bot gone).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012uoq5AVK8mkBgg83Mq6o5V
2026-09-03 07:06:10 +03:00

3.5 KiB
Raw Permalink Blame History

Роли Ansible

Роль Назначение
backup_audit Аудит бэкапов PBS и restic, метрики в node-exporter
bash_config Единый bash-конфиг для shell-хостов
compose_service (новая) Docker Compose стек под systemd oneshot-юнитом
emergency_access Аварийный доступ
emergency_bot Telegram-бот аварийного доступа
gyro Сервис gyro в изолированном LXC
lxc_docker_host (новая) Подготовка непривилегированного LXC под Docker
monitoring_blackbox Внешние HTTP-пробы с ru-vps
monitoring_exporter node-exporter / smartctl-exporter
monitoring_server Prometheus + Alertmanager + Grafana
openvpn_gateway OpenVPN сервер/клиент
pve_lxc Создание LXC через Proxmox API
uptime_kuma Uptime Kuma
base, docker, ufw Пустые каталоги, оставшиеся от ранней структуры

Новые роли

lxc_docker_host

Пакеты, проверка /dev/fuse, daemon.json со storage-driver: fuse-overlayfs, запуск docker, базовые правила UFW (SSH из LAN и OpenVPN, node-exporter 9100 с 192.168.1.30, deny incoming), проверка эффективного драйвера хранилища. Вынесено из восьми pve-*.yml — около 350 строк копипасты. Подробности и пример: lxc_docker_host/README.md.

compose_service

compose.yml + .env (генерация секретов один раз, no_log, 0600) + systemd-юнит Type=oneshot с docker compose up -d --remove-orphans, daemon-reload через handler, валидация docker compose config --quiet, рестарт только при изменениях, health-check по URL с retries/until. Подробности и пример плейбука Gitea на новых ролях: compose_service/README.md.

Статус: compose_service подключён в playbooks/ru-vps-base.yml (стек Caddy на ru-vps) — это его первый и пока единственный потребитель. lxc_docker_host не подключён нигде. Перевод pve-*.yml на обе роли — отдельный этап.

Источник данных

Факты о сервисах (vmid, узел, адрес, порты, домен, образы с digest, ресурсы, бэкап, мониторинг, порядок автозапуска) собраны в реестре ansible/inventory/group_vars/all/services.yml (homelab_services). Программные потребители реестра:

  • playbooks/reverse-proxy.yml — сборка Caddyfile;
  • playbooks/ru-vps-base.yml — стек Caddy и его закреплённый образ;
  • playbooks/pve-backup-jobs.yml — списки VMID заданий PBS (поле backup.job);
  • roles/backup_audit — VMID для аудита (флаг monitoring.backup_audit_vmid);
  • playbooks/validate.yml — сверка реестра с фактическим состоянием Proxmox.

Остальное (pve-*.yml, status.yml, monitoring, SSH config) по-прежнему дублирует значения и должно меняться согласованно.